V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
scalaer
V2EX  ›  程序员

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

  •  
  •   scalaer · 2023-11-23 15:03:37 +08:00 · 584 次点击
    这是一个创建于 370 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在某些业务场景中,下游处理系统需要直接处理数据文件。虽然 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/

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5784 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:44 · PVG 09:44 · LAX 17:44 · JFK 20:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.