Storage Formats

SerDes 和存储格式

HCatalog 使用 Hive 的 SerDe 类对数据进行序列化和反序列化。 SerDes 用于 RCFile,CSV 文本,JSON 文本和 SequenceFile 格式。检查SerDe documentation以获取新版本中可能包含的其他 SerDes。例如,在 Hive 0.9.1 中添加了Avro SerDe,在 Hive 0.11.0 中添加了ORC文件格式,在 Hive 0.10.0(插件)和 Hive 0.13.0(本机)中添加了Parquet

用户可以按照以下说明编写自定义格式的 SerDes:

有关如何使用自定义或本机 SerDe 创建表的信息,请参见行格式,存储格式和 SerDe

Hive 的用法

Hive 和 HCatalog(0.4 版及更高版本)共享相同的存储抽象,因此,您可以从 Hive 内部读取和写入 HCatalog 表,反之亦然。

但是,对于 HCatalog 版本 0.4 和 0.5,Hive 默认情况下不知道在哪里可以找到 HCatalog jar,因此,如果您使用 HCatalog 引入的任何功能(例如使用 JSON SerDe 的表),则可能会得到“找到”exception。在这种情况下,在运行 Hive 之前,请使用 HCatalog jar 将环境变量HIVE_AUX_JARS_PATH设置到该目录。 (如果遵循了Installation文档中的示例,则应为/usr/local/hcat/share/hcatalog/。)

在版本 0.5 之后,HCatalog 是 Hive 发行版的一部分,您不必将 HCatalog jar 添加到HIVE_AUX_JARS_PATH

JSON SerDe 的 CTAS 问题

将 Hive CREATE TABLE ... AS SELECT 命令与 JSON SerDe 一起使用时,将导致该表具有列标题,例如“ _col0”,HCatalog 或 Hive 可以读取该列标题,但外部用户无法轻松读取。为避免此问题,请分两步创建表,而不要使用 CTAS:

  • 创建表...

  • 插入覆盖表...选择...

有关详情,请参见HCATALOG-436

Navigation Links

Previous: 命令行界面
Next: Dynamic Partitioning

SerDe 一般信息:Hive SerDe
SerDe 详细信息:SerDe
SerDe DDL:行格式,存储格式和 SerDe

一般:HCatalog ManualWebHCat ManualHive Wiki 主页Hive 项目 site