创建一个sparksql查询,通过dataframe中的值进行过滤

xxhby3vn  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(359)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题
我是scala和spark的初学者,在任何地方都找不到答案。我有一个带有客户机id的spark df,我想在外部数据库的sql查询中使用这些id。例如: sc.sql("SELECT * FROM TABLE WHERE client_id IN (DF_CLIENT_ID)") 如何将df中的值与sql查询连接起来?

92dk7w1h

92dk7w1h1#

方法1

由于您打算使用spark数据框中的数据在外部数据库中运行查询,因此必须将spark数据框中的结果保留在spark之外,因为外部数据库无法直接访问此数据,特别是因为spark通常尝试在内存中操作,并且数据可能会跨多个节点进行分区。
我建议将数据作为临时/表或物化视图持久化到外部数据库,并从那里运行查询。如果sparkDataframe中的数据经常更改,则可以使用您选择的作业/计划程序频繁运行此操作。

SELECT * FROM TABLE WHERE client_id IN (select DF_CLIENT_ID from tempTable)

方法2

这可能更容易,在spark中做任何事情。
从外部数据库创建第二个Dataframe
合并或执行spark中的任何操作
将结果持久化到您选择的位置(可以返回到外部数据库)

sc.sql("SELECT * FROM TABLE WHERE client_id IN (select DF_CLIENT_ID from tempTable)"

相关问题