0

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

如果你们中的任何人创建了,请告知何时决定开发自定义输入/输出格式?

谢谢,

4

2 回答 2

1

要使 Hive varchar 的行为类似于 Oracle varchar2:

在处理 oracle 到 hadoop 的迁移时,我们遇到了 oracle 中的一个设置,如果 varchar2 列的数据长度超过表 DDL 中定义的值,oracle 会拒绝该记录。

例如:假设我们在 oracle 和 hadoop 中有一个列“名称”,最大长度为 10 个字节

名称 varchar2(10 BYTE) - Oracle

名称 varchar(10) - Hive

如果 name field="lengthgreaterthanten" 的值,oracle 拒绝记录,因为 oracle 在写入期间应用了模式。而 Hive 读取“lengthgrea”即 10 个字符,因为 Hive 只是在从 HDFS 读取记录时应用架构。

为了解决这个问题,我们提出了一种自定义输入格式,通过分隔分隔符来检查 varchar 字段的长度。如果长度大于指定长度,则继续下一条记录。否则,如果长度小于或等于指定长度,则将记录写入 HDFS。

希望这可以帮助。谢谢

于 2016-09-12T15:16:03.867 回答
0

用于 Hive 的各种文件格式之一是 RCFile、Parquet 和 ORC 文件格式。这些文件格式是柱状文件格式。这带来了一个优势,即当您读取大型表时,您不必读取和处理所有数据。大多数聚合查询只引用少数列而不是全部。这极大地加快了您的处理速度。

其他应用程序可能正在存储、读取和处理您的自定义输入格式,其中数据的存储方式可能与 csv 结构不同。这些可能是二进制文件或任何其他结构。

您必须按照文档创建输入格式。有关详细信息,您可以点击链接:使用 Hive 自定义 InputFormat

于 2013-09-13T16:17:54.770 回答