0
一個數組Pyspark DF列這是我的pyspark數據框模式:更新基於另一列
root
|-- user: string (nullable = true)
|-- table: string (nullable = true)
|-- changeDate: string (nullable = true)
|-- fieldList: string (nullable = true)
|-- id: string (nullable = true)
|-- value2: integer (nullable = false)
|-- value: double (nullable = false)
|-- name: string (nullable = false)
|-- temp: array (nullable = true)
| |-- element: string (containsNull = true)
|-- num_cols_changed: integer (nullable = true)
在數據幀中的數據:
+--------+-----+--------------------+--------------------+------+------+-----+----+--------------------+----------------+
| user|table| changeDate| fieldList| id|value2|value|name| temp|num_cols_changed|
+--------+-----+--------------------+--------------------+------+------+-----+----+--------------------+----------------+
| user11 | TAB1| 2016-01-24 19:10...| value2 = 100|555555| 200| 0.5| old| [value2 = 100]| 1|
| user01 | TAB1| 2015-12-31 13:12...|value = 0.34,name=new| 1111| 200| 0.5| old|[value = 0.34, n...| 2|
+--------+-----+--------------------+--------------------+------+------+-----+----+--------------------+----------------+
我想讀的臨時數組列,並基於這些值,我想更改數據框中的列。例如,第一行只有一列被更改,即value 2
,所以我想用新的值100更新列df.value2
。同樣,在下一行中,更改了2列,所以我需要提取值和名稱與他們的值並更新數據框中的適當列。所以輸出應該是這樣的:
+--------+-----+--------------------+------+------+-----+----+
| user|table| changeDate| id|value2|value|name|
+--------+-----+--------------------+------+------+-----+----+
| user11 | TAB1| 2016-01-24 19:10...|555555| 100| 0.5| old|
| user01 | TAB1| 2015-12-31 13:12...| 1111| 200| 0.34| new|
+--------+-----+--------------------+------+------+-----+----+
我想記住程序的性能,因此在僅僅使用dataframes方式聚焦,但如果沒有選擇我可以去RDD路線了。 基本上,我不知道如何在一行中處理多個值然後進行比較。我知道我可以使用column in df.columns
來比較列名,但是對於使用數組的每一行這樣做會讓我感到困惑。任何幫助或新想法表示讚賞。