【发布时间】:2017-08-13 14:30:37
【问题描述】:
我有这样的数据,我想创建以下 JSON 文档。 如何在 Spark 中实现它?在 Spark 中最有效的方法是什么?
name|contact |type
jack|123-123-1234 |phone
jack|jack.reach@xyz.com |email
jack|123 main street |address
jack|34545544445 |mobile
{
"name" : "jack",
"contacts":[
{
"contact" : "123-123-1234",
"type" : "phone"
},
{
"contact" : "jack.reach@xyz.com",
"type" : "email"
},
{
"contact" : "123 main street",
"type" : "address"
},
{
"contact" : "34545544445",
"type" : "mobile"
}
]
}
这只是我提供的一个示例用例。我有大数据集在哪里 我必须将多列行折叠成一行并进行一些分组 逻辑。
我当前的方法是编写一个读取每一行的 UDAF,存储在 缓冲并合并它。所以代码是
val mergeUDAF = new ColumnUDAF
val tempTable = inputTable.withColumn("contacts",struct($"contact",$"type")
val outputTable = tempTable.groupby($"name").agg(mergeUDAF($"contacts").alias("contacts"))
我正在尝试找出其他方法。我是 尝试使用 Spark-SQL 实现这一目标。
【问题讨论】:
-
请为该问题添加更多信息。展示你的尝试。
-
@Thiago Baldim 抱歉,更详细地更新了问题。谢谢。
标签: apache-spark group-by apache-spark-sql aggregation