-1
我有以下數據類型的火花數據幀合併的元組:火花數據幀:當一個元件相匹配
名稱:串,陣列>
下面是示例數據:
cust1 [[0,elem1], [0,elem2], [0, elem3], [1, grp1], [1, grp2], [1, grp3], [1, grp4], [2, val10], [2, val20]]
我想連接所有元素(同時保持順序),它們具有相同的元組的第一個元素。例如(0,elem1)和(0,elem2)應該合併,因爲元組的第一個元素是0(相同)。
這裏是希望的O/P:
cust1 [(0, [elem1, elem2, elem3]), (1,[grp1, grp2, grp3, grp4]), (2,[val10, val20])]
使用數據幀操作它我該怎麼辦?
我試過如下:
val reshape = udf((xs: Seq[Row]) => Row.fromSeq(Seq((_.getString(0), xs.groupBy(_.getString(0)).values.map(_.map(_.getString(1)).toArray).toArray)))
不過,我得到這個錯誤:
error: missing parameter type for expanded function ((x$1) => x$1.getString(0))
我已經添加了另一列到數據幀,可以請你更新你的答案。 – user3803714
我能夠添加額外的列,以便不成問題。不過,我想在更新的o/p中顯示的o/p中包含groupby密鑰。任何關於如何做到這一點的想法都會很棒。 – user3803714
我試過這樣做:val reshape = udf((xs:Seq [Row])=> Row.fromSeq(Seq((_。getString(0),xs.groupBy(_。getString(0))。values.map (_。getString(1))。toArray).toArray))) 但它給了我這個錯誤:錯誤:缺少擴展函數的參數類型((x $ 1)=> x $ 1.getString(0) ) – user3803714