使用SPARK读取视图时,在HUDI表上创建Athena视图会返回软删除的记录

6fe3ivhb  于 2023-01-21  发布在  Apache
关注(0)|答案(1)|浏览(164)

我有多个具有不同列名的HUDI表,并在其上构建了一个视图来标准化列名。当从Athena读取此视图时,它返回正确的响应。但是,当使用SPARK读取同一视图时,使用spark.read.parquet(“〈〉”),它也返回软删除的记录。我理解HUDI表需要用spark.read.格式读取(“hudi”)但是由于这是一个关于它的视图,所以我不得不使用spark.read.parquet(“”)。有没有办法强制HUDI只保留表中最新的提交并抑制所有旧的提交?

wn9m85ua

wn9m85ua1#

Athena视图是存储在元存储Glue中的一个虚拟表,在Spark中获得相同结果的最佳方法是使用AWS Glue作为spark会话的元存储/目录。为此,您可以使用this lib,它允许您使用AWS Glue作为Hive元存储,然后您可以使用spark.read.table("<database name>.<view name>")或通过SQL查询读取视图:

val df = spark.sql("SELECT * FROM <database name>.<view name>")

尽量避免使用spark.read.parquet(""),因为它根本不使用hudi元数据,如果您对Glue有问题,可以使用Hive创建与在Athena中为spark创建的视图相同的视图。

相关问题