在某些业务场景中,下游处理系统需要直接处理数据文件。虽然 Hive 官方支持 text, orc, parquet 等格式,但为了应对更多样化的业务场景,学习如何开发自定义存储格式变得十分重要。Hive 目前提供了ROW FORMAT SERDE
机制来实现这一需求。
代码打包后的 jar 名称为 hive-fixed-serde-1.0-SNAPSHOT.jar
添加自定义 serde jar 包
add jar hdfs:///path/hive-fixed-serde-1.0-SNAPSHOT.jar
建表指定实现类org.apache.hadoop.hive.serde2.fixed.FixedLengthTextSerDe
, 且每个字段定长分别为 10, 5, 8
CREATE TABLE fixed_length_table (
column1 STRING,
column2 STRING,
column3 STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.fixed.FixedLengthTextSerDe'
WITH SERDEPROPERTIES (
"field.lengths"="10,5,8"
)
STORED AS TEXTFILE;
当写入数据不满足定长时候, 向后补充空格, 写入
insert into fixed_length_table values ("1", "1", "1")
实际文件内容:
1 1 1
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.