簡體   English   中英

獲取一個 Spark dataframe 字段為 String 值

[英]Get a Spark dataframe field into a String value

我目前正在嘗試將我的 dataframe 過濾到一個if中,並將該字段返回到變量中。 這是我的代碼:

if df_table.filter(col(field).contains("val")):
   id_2 = df_table.select(another_field)
   print(id_2)
   # Recursive call with new variable

問題是:看起來 if 過濾有效,但 id_2 給了我列名和類型,我希望從該字段中獲取值本身。 此代碼的 output 是:

DataFrame[ID_1: bigint]
DataFrame[ID_2: bigint]
...

如果我嘗試這樣收集: id_2 = df_table.select(another_field).collect()我得到這個: [Row(ID_1=3013848), Row(ID_1=319481), Row(ID_1=391948)...]看起來就像在列表中列出所有 id 一樣。

我想這樣做: id_2 = df_table.select(another_field).filter(col(field).contains("val"))但我仍然得到與第一次嘗試相同的結果。

我希望循環的每次迭代的id_2都能從我過濾的字段中獲取值。 像:

3013848
319481
...

但不是來自我的 dataframe 的匹配字段的每個值的列表。

關於如何將其放入我的變量的任何想法?

謝謝你的幫忙。

事實上,dataFrame.select(colName) 應該返回一列(只有一列的 dataframe)而不是該行的列值。 我在你的評論中看到你想在 spark dataframe 中進行遞歸查找。首先,spark AFAIK 不支持遞歸操作。 如果你有一個深度遞歸操作要做,你最好收集你擁有的 dataframe 並在你的驅動程序上執行它而不會產生火花。 相反,你可以使用你想要的庫,但你失去了以分布式方式處理數據的優勢。 其次,spark 並非旨在對每條記錄進行迭代操作。 嘗試用dataframes的join來實現,但是又回到我的第一點,如果你后面的join操作依賴於你的join結果,以遞歸的方式,忘記spark吧。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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