只是想了解创建自定义Hive InputFormat和输出格式的最佳用例是什么?
如果您有人创建了,请告诉我们何时决定开发自定义输入/输出格式?
谢谢,
答案 0 :(得分:1)
使Hive varchar的行为与Oracle varchar2相似:
在使用oracle进行hadoop迁移时,我们在oracle中遇到了一个设置,如果varchar2列的数据长度超过表DDL中定义的值,oracle将拒绝该记录。
Ex:假设我们在oracle和hadoop中有一个列'name',最大长度为10个字节
name varchar2(10 BYTE) - Oracle
name varchar(10) - Hive
如果name field =“lengthgreaterthanten”的值,则oracle拒绝该记录,因为oracle在写入时应用模式。而hive读取“lengthgrea”即10个字符,因为Hive只是在从HDFS读取记录时应用模式。
为了解决这个问题,我们提出了一种自定义输入格式,它通过拆分分隔符来检查varchar字段的长度。如果长度大于指定长度,则继续下一条记录。否则,如果长度小于或等于指定长度,则记录将写入HDFS。
希望这会有所帮助。 感谢
答案 1 :(得分:0)
用于Hive的各种文件格式之一是RCFile,Parquet和ORC文件格式。这些文件格式是列式文件格式。这样做的好处是,当您阅读大型表时,您不必阅读和处理所有数据。大多数聚合查询仅涉及少数列而不是所有列。这大大加快了您的处理速度。
其他应用程序可能是存储,读取和处理您的自定义输入格式,其中数据的存储方式可能与csv结构不同。这些可能是二进制文件或任何其他结构。
您必须按照文档创建输入格式。有关详细信息,请访问以下链接:Custom InputFormat with Hive