Hadoop Hive - 创建自定义Hive输入和输出格式的最佳用例?

时间:2013-09-12 17:03:37

标签: hadoop hive

只是想了解创建自定义Hive InputFormat和输出格式的最佳用例是什么?

如果您有人创建了,请告诉我们何时决定开发自定义输入/输出格式?

谢谢,

2 个答案:

答案 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