[英]Join two dataframes with random in spark scala
我有 2 個數據框事件和地址。
事件:
Eent_id |Type|Event_date
AA-XX-BB|SMS |1613693293023
AA-BB-DD|CALL|1613693295039
地址:
Postcode|CityName
RG15NL |Reading
SL34AD |Slough
我想通過添加地址和郵政編碼值來豐富事件數據集。
由於這兩組之間沒有共同的密鑰,我只是在尋找一種解決方案來從地址文件中選擇隨機行並附加到事件文件中。
作為示例數據,我可以從地址文件中獲取任何隨機行並附加到事件文件中。
請讓我知道是否有辦法實現這一點,因為兩個數據集之間沒有通用鍵。
如果您沒有相同數量的行,您可以嘗試進行交叉連接,然后在隨機排序的分區上使用row_number
為每個event_id
選擇一個地址:
import org.apache.spark.sql.expressions.Window
val result = df.crossJoin(address_df).withColumn(
"rn",
row_number().over(Window.partitionBy("Eent_id").orderBy(rand()))
).filter("rn = 1").drop("rn")
result.show
//+--------+----+-------------+--------+--------+
//| Eent_id|Type| Event_date|Postcode|CityName|
//+--------+----+-------------+--------+--------+
//|AA-XX-BB| SMS|1613693293023| SL34AD| Slough|
//|AA-BB-DD|CALL|1613693295039| SL34AD| Slough|
//+--------+----+-------------+--------+--------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.