【发布时间】:2019-11-29 04:22:27
【问题描述】:
我有以下类型的 RDD(名称:AllTrainingDATA_RDD) org.apache.spark.rdd.RDD[(String, Double, Double, String)] :
(ICCH_1,4.3,3.0,Iris-setosa)
(ICCH_1,4.4,2.9,Iris-setosa)
(ICCH_1,4.4,3.0,Iris-setosa)
(ICCH_2,4.4,3.2,Iris-setosa)
第一列:ICCH_ID,第二列:X_Coordinates,第三列:Y_Coordinates,第四列:类
我想最终得到一个 RDD,它有 第 2 列和第 3 列作为键,第 4 列作为值。 ICCH_ID 列应保留在 RDD 中。
我目前基于一些互联网研究的尝试是这样的:
val AllTrainingDATA_RDD_Final = AllTrainingDATA_RDD.map(_.split(",")).keyBy(_(X_COORD,Y_COORD)).mapValues(fields => ("CLASS")).groupByKey().collect()
但是我得到了这个错误:
错误:值拆分不是 (String, Double, Double, String) 的成员
附:我正在使用 Databricks 社区版。我是 Scala 新手。
【问题讨论】:
-
我建议您先学习一个简单的 Scala 教程。您的代码有很多简单的语法错误。我相信Tour of Scala 应该足够了。另外,请掌握两者的 Scaladoc,
stdlib和Spark。最后,谷歌是你的朋友。 - PS:错误对我来说很清楚,你的RDD是元组,元组没有拆分方法,你的字段访问也很糟糕。 -
感谢您的建议。我完全同意你的看法!我会注意你指给我的教程!
标签: scala apache-spark key rdd