如何將火花(最大300 MB)中的一個相當小的數據幀轉換爲嵌套地圖以改善晶石的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, ...)