此前Apache Hudi社区一直有小伙伴询问可否使用Amazon Redshift查询Hudi表,如今它终于来了。html
如今您可使用Amazon Redshift查询Amazon S3 数据湖中Apache Hudi/Delta Lake表数据。Amazon Redshift Spectrum做为Amazon Redshift的特性能够容许您直接从Redshift集群中查询S3数据湖,而无需先将数据加载到其中,从而最大限度地缩短了洞察数据价值时间。git
Redshift Spectrum支持Lake house架构,能够跨Redshift、Lake house和操做数据库查询数据,而无需进行ETL或加载数据。Redshift Spectrum支持开放数据格式,如Parquet、ORC、JSON和CSV。Redshift Spectrum还支持查询具备复杂嵌套数据类型(如struct、array或map)。github
Redshift Spectrum容许您读取Apache Hudi 0.5.2版本的Copy-on-Write(CoW)表的最新快照,而且能够经过manifest文件读取最新的Delta Lake 0.5.0版本表。sql
要查询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数据中的列。映射是按列完成的。apache
Hudi分区和未分区表的数据定义语言(DDL)语句与其余Apache Parquet文件格式的语句相似。对于Hudi表,能够将INPUTFORMAT
定义为org.apache.hudi.hadop.HoodieParquetInputFormat
. LOCATION
参数必须指向包含.hoodie
文件夹的Hudi表基础文件夹,该文件夹是创建Hudi提交时间线所必需的。在某些状况下,对Hudi表的SELECT操做可能会失败,并显示消息No valid Hudi commit timeline found
。若是是,请检查.hoodie
文件夹是否在正确的位置,而且包含有效的Hudi提交时间线。架构
注意,Apache Hudi格式只有在使用AWS Glue Data时支持,不支持使用Apache Hive metastore做为外部catalog。框架
使用以下命令定义非分区表oop
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'
使用以下命令定义分区表code
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做为数据湖框架在云上发挥的做用愈来愈大,生态也愈来愈完善,也欢迎广大开发者参与Apache Hudi社区,一块儿建设更好的数据湖,Github传送门https://github.com/apache/hudi