写了一篇博客, Apache Hive 实现自定义存储格式

321 天前
 scalaer

在某些业务场景中,下游处理系统需要直接处理数据文件。虽然 Hive 官方支持 text, orc, parquet 等格式,但为了应对更多样化的业务场景,学习如何开发自定义存储格式变得十分重要。Hive 目前提供了ROW FORMAT SERDE机制来实现这一需求。


  1. 代码打包后的 jar 名称为 hive-fixed-serde-1.0-SNAPSHOT.jar

  2. 添加自定义 serde jar 包

    add jar hdfs:///path/hive-fixed-serde-1.0-SNAPSHOT.jar
    
  3. 建表指定实现类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;
    
  4. 当写入数据不满足定长时候, 向后补充空格, 写入

    insert into fixed_length_table values ("1", "1", "1")
    

    实际文件内容:

    1         1    1
    

blog 地址: https://mggg.cloud/zh/hive_custom_serde/

561 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/994532

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX