繁体   English   中英

在火花 scala 中随机加入两个数据帧

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM