zoukankan      html  css  js  c++  java
  • 划重点!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.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。

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

    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作为数据湖框架在云上发挥的作用越来越大,生态也越来越完善,也欢迎广大开发者参与Apache Hudi社区,一起建设更好的数据湖,Github传送门https://github.com/apache/hudi

  • 相关阅读:
    (转)基于C#的socket编程的TCP异步实现
    socket
    (转)抽象类、抽象属性、抽象方法
    (转)c# 互斥锁
    (转)C#连接OleDBConnection数据库的操作
    c# DLL封装并调用
    网络cmd命令
    (转)UCOSII在任务切换与出入中断时堆栈指针的使用
    app和bootloader跳转 MSP与PSP
    (转)stm32启动文件详解
  • 原文地址:https://www.cnblogs.com/leesf456/p/13741641.html
Copyright © 2011-2022 走看看