创建自定义配置单元输入和输出格式的最佳用例?

new9mtju  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(309)

只是想了解创建自定义配置单元inputformat和output格式的最佳用例是什么?
如果你们中有人创建了一个自定义的输入/输出格式,请告诉我什么时候决定开发?
谢谢,

avkwfej4

avkwfej41#

Hive使用的各种文件格式之一是rcfile、parquet和orc文件格式。这些文件格式是列式文件格式。这样做的好处是,在读取大型表时,不必读取和处理所有数据。大多数聚合查询只引用少数列,而不是所有列。这大大加快了处理速度。
其他应用程序可以存储、读取和处理自定义输入格式,其中数据的存储方式可能与csv结构不同。这些可能是二进制文件或任何其他结构。
您必须按照文档创建输入格式。有关详细信息,请访问以下链接:custominputformat with hive

rqdpfwrv

rqdpfwrv2#

要使配置单元varchar的行为类似于oracle varchar2:
在进行oracle到hadoop的迁移时,我们遇到了oracle中的一个设置:如果varchar2列的数据长度超过表ddl中定义的值,oracle将拒绝该记录。
例如:假设在oracle和hadoop中有一列'name',最大长度为10字节
名称varchar2(10字节)-oracle
名称varchar(10)-hive
如果name field=“lengthgreaterthanten”的值为0,则oracle将拒绝该记录,因为oracle在写入时应用了架构。而hive读取“lengthgrea”,即10个字符,因为hive只是在从hdfs读取记录时应用模式。
为了解决这个问题,我们提出了一种自定义输入格式,通过分隔符上的拆分来检查varchar字段的长度。如果长度大于指定的长度,它将继续到下一个记录。否则,如果长度小于或等于指定的长度,则将记录写入hdfs。
希望这有帮助。谢谢

相关问题