【发布时间】:2018-01-27 00:22:37
【问题描述】:
我有一个如下所示的数据框:
product1 product2 difference
123 456 0.5
123 789 1
456 789 0
456 123 0.5
789 123 1
789 456 0
我想要一个如下所示的输出:
{'123': {'456': 0.5, '789': 1}, 456: {'123': 0.5, '789': 1}, '789': {'123': 1, '456': 0}}
到目前为止,我已经尝试过zipWithIndex 和collectAsMap,但没有成功。
到目前为止我尝试过的代码是:
val tples: RDD[(Int, (Int, Double))] = (products.rdd
.map(r => (r(0).toString.toDouble.toInt, (r(1).toString.toDouble.toInt, r(2).toString.toDouble))))
val lst: = tpls.groupByKey().map(r => (r._1, r._2.toSeq))
这给了我产品和差异的列表,而不是哈希图
【问题讨论】:
-
我相信你还有一个 RDD,而不是一个列表......如果你想要一个 Hashmap ,你必须收集 RDD
-
这是错字吗?
456 -> 789 -> 1在示例中应该是456 -> 789 -> 0.0?
标签: scala apache-spark hashmap tuples spark-dataframe