根据Databricks发布的article,可以将Delta Lake与AWS Glue集成。但是,我不确定是否可以在Databricks平台之外也这样做。有人这样做过吗?还有,是否可以使用Glue爬虫添加Delta Lake相关的元数据?
55ooxyrt1#
这是不可能的。虽然您可以在数据库平台之外爬网S3增量文件,但您不会在表中找到数据。根据doc,其内容如下:警告不要在位置上使用AWS Glue Crawler来定义AWS Glue中的表格,Delta Lake维护着对应于表格多个版本的文件,查询Glue爬取的所有文件会生成不正确的结果。
8aqjt8rx2#
最后可以使用AWS Glue Crawler来检测和编目增量表。这里有一个blog post解释如何做到这一点。
7eumitmz3#
我目前正在使用一个解决方案,通过Apache Spark(https://docs.delta.io/latest/presto-integration.html#language-python)生成Delta表的清单。我使用以下方法为每个增量表生成一个清单文件:
deltaTable = DeltaTable.forPath(<path-to-delta-table>) deltaTable.generate("symlink_format_manifest")
然后使用下面的示例创建表。下面的DDL还在Glue Catalog中创建表;然后您可以使用Glue数据目录访问来自AWS Glue的数据。
CREATE EXTERNAL TABLE mytable ([(col_name1 col_datatype1, ...)]) [PARTITIONED BY (col_name2 col_datatype2, ...)] ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION '<path-to-delta-table>/_symlink_format_manifest/' -- location of the generated manifest
ktca8awb4#
如果你能澄清你说的“用AWS胶水整合三角洲湖”是什么意思,那就更好了。目前,没有直接的Glue API支持Delta湖,但是,您可以使用Delta湖库编写自定义代码,将输出保存为Delta湖。要使用Crawler将Delta Lakes的 meta添加到目录中,这里有一个解决方法。该解决方法并不漂亮,有两个主要部分。1)获取Delta Lake引用文件的清单。您可以参考Delta Lake源代码,或者玩弄_delta_log中的日志,或者使用以下粗暴的方法
import org.apache.spark.sql.functions.input_file_name spark.read.format("delta") .load(<path-to-delta-lake>) .select(input_file_name) .distinct
2)使用Scala或Python Glue API和清单在Catalog中创建或更新表。
hm2xizp95#
AWS Glue Crawler允许我们将增量表事务日志中的元数据更新到Glue元存储。参考-https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-delta-lake但也有一些缺点-
5条答案
按热度按时间55ooxyrt1#
这是不可能的。虽然您可以在数据库平台之外爬网S3增量文件,但您不会在表中找到数据。
根据doc,其内容如下:
警告
不要在位置上使用AWS Glue Crawler来定义AWS Glue中的表格,Delta Lake维护着对应于表格多个版本的文件,查询Glue爬取的所有文件会生成不正确的结果。
8aqjt8rx2#
最后可以使用AWS Glue Crawler来检测和编目增量表。
这里有一个blog post解释如何做到这一点。
7eumitmz3#
我目前正在使用一个解决方案,通过Apache Spark(https://docs.delta.io/latest/presto-integration.html#language-python)生成Delta表的清单。
我使用以下方法为每个增量表生成一个清单文件:
然后使用下面的示例创建表。下面的DDL还在Glue Catalog中创建表;然后您可以使用Glue数据目录访问来自AWS Glue的数据。
ktca8awb4#
如果你能澄清你说的“用AWS胶水整合三角洲湖”是什么意思,那就更好了。
目前,没有直接的Glue API支持Delta湖,但是,您可以使用Delta湖库编写自定义代码,将输出保存为Delta湖。
要使用Crawler将Delta Lakes的 meta添加到目录中,这里有一个解决方法。该解决方法并不漂亮,有两个主要部分。
1)获取Delta Lake引用文件的清单。您可以参考Delta Lake源代码,或者玩弄_delta_log中的日志,或者使用以下粗暴的方法
2)使用Scala或Python Glue API和清单在Catalog中创建或更新表。
hm2xizp95#
AWS Glue Crawler允许我们将增量表事务日志中的元数据更新到Glue元存储。参考-https://docs.aws.amazon.com/glue/latest/dg/crawler-configuration.html#crawler-delta-lake
但也有一些缺点-