【发布时间】:2020-01-21 02:45:46
【问题描述】:
我的“结构化数据”如下所示,我需要将其转换为下面显示的“预期结果”类型。我的“输出模式”也显示出来了。感谢您是否可以就我如何使用 Spark Scala 代码实现这一点提供一些帮助。
注意:对结构化数据进行分组是在 SN 和 VIN 列上完成的。
相同的SN 和VIN 应该有一行,如果SN 或VIN 发生变化,则数据将出现在下一行。
结构化数据:
+-----------------+-------------+--------------------+---+
|VIN |ST |SV |SN |
|FU74HZ501740XXXXX|1566799999225|44.0 |APP|
|FU74HZ501740XXXXX|1566800002758|61.0 |APP|
|FU74HZ501740XXXXX|1566800009446|23.39 |ASP|
预期结果:
输出架构:
val outputSchema = StructType(
List(
StructField("VIN", StringType, true),
StructField("EVENTS", ArrayType(
StructType(Array(
StructField("SN", StringType, true),
StructField("ST", IntegerType, true),
StructField("SV", DoubleType, true)
))))
)
)
【问题讨论】:
-
请在您的问题中添加文本而不是图像。它使我们更容易根据您当前的数据集重现问题。
-
您在这里按哪一列分组?
SN? -
你好@Shaido,是的,应该在列 SN 上进行分组...我想遍历 SN 列,并将 SN、ST、SV 包括在列 EVENTS 和 VIN 的单个数组中另一列如预期结果所示。
-
@AnilKumarKB:如果 SN 对同一个 VIN 有不同的 valeus 会发生什么?例如,在您的示例中,如果第二行中的 VIN 与第一行不同。
-
您好@Shaido 很抱歉造成混淆,它应该按 SN 和 VIN 分组。例如:一行代表相同的 SN 和 VIN。如果 SN 或 VIN 发生变化,则数据将出现在下一行中。
标签: scala apache-spark apache-spark-sql