0

我有一個pyspark數據框,模式如下所示。將元素添加到火花數據框中的現有結構中

root 
|-- useragent: string (nullable = true) 
|-- properties: struct (nullable = true) 
| |-- browser: string (nullable = true) 
| |-- device: string (nullable = true) 

我正在使用udf + withColumn從useragent中提取更多信息。但我只能在新的專欄中存儲任何我正在創建的附加屬性。有沒有一種方法可以將它追加到結構本身?

我已經改變了模式,但它不轉讓所有我從其他屬性所需的數據已經存在

df = df.schema['properties'].dataType.add(StructField('type', StringType())) 

難道更有意義,這轉換爲RDD?

回答

0

使用這段代碼不會得到任何數據,因爲您沒有選擇任何數據。 你在這個操作中所做的只不過是訪問Schema屬性,以某種方式修改它,並將它分配給一個變量df(這不是你所期待的修改的數據框),而只是一個StructType對象(似乎有一些語法錯誤,請檢查)

你應該做的是通過select和合適的轉換函數修改數據幀。您可以考慮創建具有所需結構的StructField類型的新列,並使用withColumn函數將其添加爲新列函數

相關問題