【发布时间】:2019-03-21 23:19:28
【问题描述】:
简单地说,我想像这样转换多图:
val input = Map("rownum"-> List("1", "2", "3") , "plant"-> List( "Melfi", "Pomigliano", "Torino" ), "tipo"-> List("gomme", "telaio")).toArray
在以下 Spark 数据帧中:
+-------+--------------+-------+
|rownum | plant | tipo |
+------ +--------------+-------+
| 1 | Melfi | gomme |
| 2 | Pomigliano | telaio|
| 3 | Torino | null |
+-------+--------------+-------+
用“空”值替换缺失值。我的问题是将地图功能应用于 RDD:
val inputRdd = sc.parallelize(input)
inputRdd.map(..).toDF()
有什么建议吗?提前致谢
【问题讨论】:
-
你怎么知道缺少的“tipo”值是
rownum 3的值?它可能来自任何地方,除非您有理由知道缺失值只能来自“截断”列表。 -
因为列名是按顺序提取的XML标签。所以假设你有以下 xml:
1 Melfi gomme 2 Pomigliano telaio
。正如你所看到的植物 Torino hano "tipo",所以我想用 "null" 替换那个缺失的值。3 Torino -
感谢您的回复。您可以编辑您的问题以添加这些相关信息,这对于未来的读者来说更具可读性。
-
XML 告诉我 rownum 3 没有“错字”,但多图不允许我得出这个结论。采用相同的 XML,但从 rownum 2 中删除 tipo 并将其放入 rownum 3,您将获得相同的多图。您的 XML to Map 似乎破坏了关于 null 来自何处的重要信息。
标签: scala apache-spark dataframe rdd