【发布时间】:2021-03-09 14:35:37
【问题描述】:
我正在学习编写 PySpark 代码。我可以通过使用.createOrReplaceTempView() 在它们之上构建像views 这样的SQL 来连接两个数据框,并获得我想要的输出。但是我想通过直接在数据帧上操作而不是创建views来学习如何做同样的事情。
这是我的代码
df1.createOrReplaceTempView('left_table')
df2.createOrReplaceTempView('right_table')
spark.sql('''
select
l.*,
CASE WHEN r.id IS NULL THEN current_timestamp() ELSE r.timestamp END ts,
from
left_table l
left join
right_table r
on l.id = r.id
''').show()
对于匹配 id 我希望从右表中取出timestamp 列。对于仅在左表中可用的id,我想使用current_timestamp() 作为最终列值的系统时间戳。
我如何通过直接在数据框 df1 和 df2 上操作而不是构建视图来实现这一点?
【问题讨论】:
标签: python sql apache-spark pyspark apache-spark-sql