数据湖框架 Hudi or Iceberg 不知道怎么选?云计算一哥AWS的选择了解下?

微信扫一扫,分享到朋友圈

数据湖框架 Hudi or Iceberg 不知道怎么选?云计算一哥AWS的选择了解下?

此前Apache Hudi社区一直有小伙伴询问能否使用Amazon Redshift(数仓)查询Hudi表,现在它终于来了。

现在您可以使用Amazon Redshift查询Amazon S3 数据湖中Apache Hudi/Delta Lake表数据。Amazon Redshift Spectrum作为Amazon Redshift的特性可以允许您直接从Redshift集群中查询S3数据湖,而无需先将数据加载到其中,从而最大限度地缩短了洞察数据价值时间。

Redshift Spectrum支持Lake house架构,可以跨Redshift、Lake house和操作数据库查询数据,而无需进行ETL或加载数据。Redshift Spectrum支持开放数据格式,如Parquet、ORC、JSON和CSV。Redshift Spectrum还支持查询具有复杂嵌套数据类型(如struct、array或map)。

Redshift Spectrum允许您读取Apache Hudi 0.5.2版本的Copy-on-Write(CoW)表的最新快照,并且可以通过manifest文件读取最新的Delta Lake 0.5.0版本表。

要查询Apache Hudi的Copy-On-Write(CoW)格式的数据,可以使用Amazon Redshift-Spectrum外表。Hudi Copy On Write表是存储在Amazon S3中的Apache Parquet文件的集合。有关更多信息,请参阅开源Apache Hudi文档中的Copy-On-Write表。

当创建引用Hudi CoW格式数据的外表后,将外表中的每一列映射到Hudi数据中的列。映射是按列完成的。

Hudi分区和未分区表的数据定义语言(DDL)语句与其他Apache Parquet文件格式的语句类似。对于Hudi表,可以将 INPUTFORMAT 定义为 org.apache.hudi.hadoop.HoodieParquetInputFormat . LOCATION 参数必须指向包含 .hoodie 文件夹的Hudi表基础文件夹,该文件夹是建立Hudi提交时间线所必需的。在某些情况下,对Hudi表的SELECT操作可能会失败,并显示消息** No valid Hudi commit timeline found **。如果是,请检查 .hoodie 文件夹是否在正确的位置,并且包含有效的Hudi提交时间线。

注意,Apache Hudi格式只有在使用AWS Glue Data时支持,不支持使用Apache Hive metastore作为外部catalog。

使用如下命令定义非分区表

CREATE EXTERNAL TABLE tbl_name (columns)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT 'org.apache.hudi.hadoop.HoodieParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 's3://s3-bucket/prefix'

使用如下命令定义分区表

CREATE EXTERNAL TABLE tbl_name (columns)
PARTITIONED BY(pcolumn1 pcolumn1-type[,...])
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT 'org.apache.hudi.hadoop.HoodieParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 's3://s3-bucket/prefix'

为Hudi分区表添加分区,请使用 ALTER TABLE ADD PARTITION 命令,其中 LOCATION 参数指向属于分区的Amazon S3子文件夹。

使用如下命令添加分区

ALTER TABLE tbl_name
ADD IF NOT EXISTS PARTITION(pcolumn1=pvalue1[,...])
LOCATION 's3://s3-bucket/prefix/partition-path'

Apache Hudi最早被AWS EMR官方集成,然后原生集成到AWS上不同云产品,如Athena、Redshift,可以看到Hudi作为数据湖格式层衔接了云原生数据湖与数据仓库,可用于打造湖仓一体底层通用格式,Hudi生态也越来越完善,也欢迎广大开发者参与Apache Hudi社区,一起建设更好的数据湖,Github传送门:https://github.com/apache/hudi

阅读原文查看Amazon Redshift官宣链接。

推荐阅读

Apache Hudi和Presto的前世今生

恭喜!Apache Hudi社区新晋多位Committer

Apache Hudi 异步Compaction部署方式汇总

Apache Hudi丨数据服务实时化利器

太忙没空去看湖景?来看阿里云DLA如何快速构建数据湖

微信扫一扫,分享到朋友圈

数据湖框架 Hudi or Iceberg 不知道怎么选?云计算一哥AWS的选择了解下?

给 JDK 报了一个 P4 的 Bug,结果居然……

上一篇

爆料人士:苹果A14X处理器半个月前就已开始量产

下一篇

你也可能喜欢

数据湖框架 Hudi or Iceberg 不知道怎么选?云计算一哥AWS的选择了解下?

长按储存图像,分享给朋友