EMR Presto提供了独立的Delta连接器,在E-MapReduce集群上支持了较为完整的数据湖特性并进行了特性扩展。
背景信息
Delta Lake是DataBricks公司推出的一种数据湖方案,以数据为中心,围绕数据流走向推出了一系列功能特性,详情请参见Delta Lake概述。
前提条件
已创建DataLake集群或Hadoop集群,并选择了Presto服务,详情请参见创建集群。
使用限制
DataLake集群和EMR-3.39.1及后续版本、EMR-5.5.0及后续版本的Hadoop集群或Presto集群,支持配置Delta连接器。
基础使用
修改Delta连接器配置
修改Delta连接器配置,详情请参见修改内置连接器。
连接器默认配置
参数 | 描述 |
---|---|
hive.metastore.uri | Hive Metastore使用Thrift协议连接的URI。参数值您可以根据实际情况修改,默认格式为thrift://master-1-1.cluster-24****:9083。 |
hive.config.resources | Hive Metastore使用的资源文件位置。 |
示例
Presto无法新建或修改Delta Lake表,可以使用Spark-sql来创建,详情请参见基础使用。
- 生成数据。
- 查询数据。
高阶使用
Time Travel
Time Travel允许查询表的历史数据。
for xxx as of
,其中xxx
的值可以为VERSION或TIMESTAMP,分别对应版本号和时间戳两种Time travel模式。
FOR
关键字。
示例如下:
Z-Order
Presto基于Z-Order优化了Delta表查询。目前支持Parquet自身的优化和Data Skipping的优化。执行优化后,Delta会按文件粒度统计各个字段的最大和最小值,该统计信息用于直接过滤数据文件。Presto的Delta连接器可以读取到这些统计信息。
对于使用OPTIMIZE和ZORDER BY命令优化过的Delta表,在Z-Order列设置合适时,Presto的查询速度最大能够提升数十倍。具体优化方法请参见通过文件管理优化性能。
Presto支持Z-order的数据类型有Int、Long、Double、Float、Binary、Boolean、String和Array。
=
、<
、<=
、>
和>=
。
例如,表conn_zorder,共含有src_ip、src_port、dst_ip和dst_port四列。
OPTIMIZE conn_zorder ZORDER BY (src_ip, src_port, dst_ip, dst_port);
- 查询一部分Z-Order优化的列能提升性能,命令如下所示。
SELECT COUNT(*) FROM conn_zorder WHERE src_ip > '64.';
- 按Z-Order的优化顺序执行查询,速度提升非常大,命令如下所示。
SELECT COUNT(*) FROM conn_zorder WHERE src_ip >= '64.' AND dst_ip < '192.' AND src_port < 1000 AND dst_port > 50000;