当前位置: 首页 > article >正文

flink写parquet解决timestamp时间格式字段问题

背景

        Apache Parquet 是一种开源的列式数据文件格式,旨在实现高效的数据存储和检索。它提供高性能压缩和编码方案(encoding schemes)来批量处理复杂数据,并且受到许多编程语言和分析工具的支持。

        在我们通过flink写入parquet文件的时候,会遇到timestamp时间格式写入的问题。flink官方sdk提供的avro定义转换为parquet文件字段定义是没有timestamp类型的,得另找方法解决。

parquet的时间字段

        parquet字段定义存在如下几种类型:

  • BOOLEAN: 1 bit boolean
  • INT32: 32 bit signed ints
  • INT64: 64 bit signed ints
  • INT96: 96 bit signed ints
  • FLOAT: IEEE 32-bit floating point values
  • DOUBLE: IEEE 64-bit floating point values
  • BYTE_ARRAY: 任意长度 byte 数组

        其中timestamp使用int96类型进行存储,只有使用int96按照指定格式存储时间格式,我们才可以通过hive,sparksql等计算引擎读取正确的时间数据。

flink2parquet

      flink官方提供的写入parquet的处理方式如下:

    String avroSchema = "";

    //构建parquet格式定义
    Schema schema = new Schema.Parser().parse(avroSchema);


    BulkWriter.Factory<GenericRecord> writerFactory = ParquetAvroWriters.forGenericRecord(schema);

    org.apache.flink.connector.file.sink.FileSink fileSink = org.apache.flink.connector.file.sink.FileSink.forBulkFormat(
                    new org.apache.flink.core.fs.Path("hdfs://xxxxx/xx/xx"), writerFactory)
            .withRollingPolicy(OnCheckpointRollingPolicy.build())
            .build();

    datastream.sin

http://www.kler.cn/a/520924.html

相关文章:

  • Elasticsearch+kibana安装(简单易上手)
  • 开源音乐管理软件Melody
  • 计算机网络 (61)移动IP
  • 【信息系统项目管理师-选择真题】2016上半年综合知识答案和详解
  • 寒假学web--day10
  • “C:\Users\Win11\AppData\Roaming\pip\pip.ini“取消
  • 【已解决】黑马点评项目Redis版本替换过程的数据迁移
  • Flowmix/Docx 多模态文档编辑器: 让文档不止于文档
  • Protobuf序列化协议使用指南
  • 基于微信小程序的移动学习平台的设计与实现 移动学习平台(源码+文档)
  • Ubuntu20.04 运行 Cartographer demo bag
  • Ubuntu-手动安装 SBT
  • 物联网MQTT协议及本地化部署测试
  • doris:ORC
  • 每日 Java 面试题分享【第 9 天】
  • HTTP(1)
  • Golang Gin系列-9:Gin 集成Swagger生成文档
  • GPT 结束语设计 以nanogpt为例
  • VScode+Latex (Recipe terminated with fatal error: spawn xelatex ENOENT)
  • doris:Insert Into Values
  • 深入理解若依RuoYi-Vue数据字典设计与实现
  • 关于使用微服务的注意要点总结
  • LongLoRA:高效扩展大语言模型上下文长度的微调方法
  • 机器学习周报-文献阅读
  • 算法知识补充2
  • 软键盘显示/交互问题