我正在使用spark R,我想基於現有列的字符串修改將列添加到SparkDataFrame。考慮以下SparkDataFrame:如何使用一組SQL表達式將列添加到SparkDataFrame?
head(df)
id address
1 street_X, postal_code_X, neighborhood_X, county_name_X
2 neighborhood_Y, county_name_Y
3 postal_code_Z, neighborhood_Z, county_name_Z
我需要添加一個只包含鄰域的列。我設法如下進入一個新的SparkDataFrame提取此列:
new_df <- selectExpr(df, "SUBSTRING_INDEX(address, ',', -2) AS neighborhood")
new_df <- selectExpr(new_df, "SUBSTRING_INDEX(neighborhood, ',', 1) AS neighborhood")
head(new_df)
neighborhood
neighborhood_X
neighborhood_Y
neighborhood_Z
但我怎麼可以添加此列附近原來的DF(相當於R中cbind /我檢查withColumn,但並沒有設法給它結合與selectExpr)?
你有沒有試過JOIN命令?選擇是選擇列的子集,而不是添加新列的投影 –
謝謝,你的意思是加入(df,df_new)?我收到一個ERROR RBackendHandler,指出spark.sql.crossJoin.enabled應該設置爲true(笛卡爾連接可能過於昂貴並且默認情況下處於禁用狀態)。我需要檢查如何做到這一點。 – kanimbla
其實,沒關係......你爲什麼不能在相同的選擇內兩次調用SUBSTRING? –