【发布时间】:2019-07-10 01:27:50
【问题描述】:
如何将 spark 中相当小的数据帧(最大 300 MB)转换为嵌套映射以改进 spark 的 DAG。我相信此操作将比稍后的连接 (Spark dynamic DAG is a lot slower and different from hard coded DAG) 更快,因为转换后的值是在自定义估计器的训练步骤中创建的。现在我只想在管道的预测步骤中快速应用它们。
val inputSmall = Seq(
("A", 0.3, "B", 0.25),
("A", 0.3, "g", 0.4),
("d", 0.0, "f", 0.1),
("d", 0.0, "d", 0.7),
("A", 0.3, "d", 0.7),
("d", 0.0, "g", 0.4),
("c", 0.2, "B", 0.25)).toDF("column1", "transformedCol1", "column2", "transformedCol2")
这给出了错误的地图类型
val inputToMap = inputSmall.collect.map(r => Map(inputSmall.columns.zip(r.toSeq):_*))
我更想要类似的东西:
Map[String, Map[String, Double]]("column1" -> Map("A" -> 0.3, "d" -> 0.0, ...), "column2" -> Map("B" -> 0.25), "g" -> 0.4, ...)
【问题讨论】:
标签: scala apache-spark dataframe hashmap apache-spark-sql