簡體   English   中英

如何使用 where 子句從 pyspark dataframe 中獲取值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM