我有以下數據框(內部數組的值是字符串):星火Dataframes:在新的一列追加列表(蟒蛇)
+--------------------+--------------------+
| col1| col2|
+--------------------+--------------------+
| [value1, value2]| [value3,value4]|
| [value5]| [value6]|
+--------------------+--------------------+
如何創建一個新的陣列,包括一個新列的所有雙方
+--------------------+--------------------+------------------------------+
| col1| col2| new |
+--------------------+--------------------+------------------------------+
| [value1, value2]| [value3,value4]|[value1, value2,value3,value4]|
| [value5]| [value6]| [value5,value6]|
+--------------------+--------------------+------------------------------+
值我試過如下:
def add_function(col1,col2):
return col1+col2
udf_add = udf(add_function,ArrayType(StringType()))
dftrial.withColumn("new",udf_add("col1","col2")).show(2)
根據需要它做任務。但我不明白爲什麼當我修改add_function
到:
def add_function(col1,col2):
return col1.extend(col2)
它返回null
值。爲什麼?
而我的主要問題:是否有另一種方式來實現這個任務,任何已經實現的功能?我發現concat
,但它似乎只適用於字符串。
感謝您的回答。你能澄清我永遠不應該做的事嗎?因爲我完全不理解它,它似乎是我失蹤的重要信息。 –
'list.extend'修改(改變)現有的'list'。不要對你的數據做這件事。總是返回一個新的對象,除非明確地允許做另外的事情(參見'RDD.fold','RDD.aggregate'等) – zero323