seatunnel,iceberg,doris之间存在时区问题

Viewed 15

整体架构:

  • seatunnel:2.3.12
  • amoro:0.8
  • doris:3.0.8

在使用这3个组件搭建湖仓一体的过程中发现存在数据湖的问题。比如seatunnel的iceberg sink配置如下:

sink {
  Iceberg {
    plugin_input = "out_table"
    catalog_name = "warehouse"
    namespace = "your_warehose_db"
    table = "your_sink_table"
    iceberg.catalog.config = {
      warehouse: "warehouse"
      uri: "http://amoro:1630/api/iceberg/rest"
      catalog-impl = "org.apache.iceberg.rest.RESTCatalog"
      s3.endpoint = "https://minio-s3:9000"
      s3.region="us-east-1"
      s3.use-path-style= true
      s3.access-key-id = "admin"
      s3.secret-access-key = "admin"
    }
    iceberg.table.partition-keys = "hour(create_at)"   <- 重点配置
  }
}

然后在amoro的客户端中去查询(本质是spark sql)发现没有时区问题。但是使用doris查询需要+8小时查询查询到数据。也就是说通过seatunnel ETL操作后插入到iceberg的数据使用spark和doris查询时区不一致。但是我整个seatunnel,s3,doris都是采用相同的时区。

最终解决方法:

  1. 使用doris创建iceberg表,并指定分区key
    PARTITION BY LIST(date_hour(create_at)) ()
    

PROPERTIES(
"compression-codec" = "zstd",
"write-format" = "parquet"
);

3. 删除seatunnel的iceberg.table.partition-keys参数
2 Answers

与seatunnel的开发人员沟通,seatunel开发说2.3.12确实存在iceberg时区问题。已经提交fix了。在下个版本会被修复。