V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
scalaer
V2EX  ›  程序员

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

  •  
  •   scalaer · Nov 23, 2023 · 887 views
    This topic created in 885 days ago, the information mentioned may be changed or developed.

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

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5933 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 06:38 · PVG 14:38 · LAX 23:38 · JFK 02:38
    ♥ Do have faith in what you're doing.