[英]How to get a value from one pyspark dataframe using where clause
我對 Pyspark 很陌生。 所以我有一個要求,我必須從一個 MYSQL 表中獲取一列說“id”,對於每個 id,我需要獲取另一個 MYSQL 表中的列的“HOST”值。 所以我已經完成了第一部分,我通過使用下面的代碼來獲取 id。
criteria_df = read_data_from_table(criteria_tbl)
datasource_df = read_data_from_table(data_source_tbl)
import pyspark.sql.functions as F
for row in criteria_df.collect():
account_id = row["account_id"]
criteria_name = row["criteria"]
datasource_df = datasource_df.select(F.col('host')).where(F.col('id') == account_id)
datasource_df.show()
但是當我試圖為每個 id 獲取主機值時,我沒有得到任何值。
您應該將where
子句放在select
子句之前,否則它總是不返回任何內容,因為where
子句中的列不存在。
datasource_df = datasource_df.where(F.col('id') == account_id).select(F.col('host'))
同樣對於這種類型的查詢,最好進行join
,而不是收集數據幀並逐行比較它們。
您可以使用半連接:
datasource_df.join(criteria_df, on=datasource_df['id'] == criteria_df['account_id'], how='left_semi')\
.select(F.col('host'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.