微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 pyspark 中的另一个数据库加载表

如何解决从 pyspark 中的另一个数据库加载表

嗨,我敬爱的伙伴们!

我目前正在使用 AWS 和 PySpark。我的表存储在 S3 中,可从 Athena 查询

在我的 glue 作业中,我习惯于将表格加载为:

my_table_df = sparkSession.table("myTable")

但是,这一次,我想从另一个数据库访问同一数据源 (AwsDataCatalog) 中的表。所以我做了一些很有效的事情:

my_other_table_df = sparkSession.sql("SELECT * FROM anotherDatabase.myOtherTable")

我只是在寻找一种更好的方法来编写相同的内容,而无需使用 sql 查询,在一行中,只需为此操作指定数据库即可。看起来应该像 sparkSession.database("anotherDatabase").table("myOtherTable")

欢迎任何建议

解决方法

您可以为此使用 DynamicFrameReader。这将返回一个 DynamicFrame。不过,您只需在该 DynamicFrame 上调用 .toDF() 即可将其转换为原生 Spark DataFrame。

sc = SparkContext()
glue_context = GlueContext(sc)
spark = glue_context.spark_session
job = Job(glue_context)

data_source = glue_context.create_dynamic_frame.from_catalog(
            database="database",table_name="table_name"
).toDF()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。