【发布时间】:2019-06-02 07:16:20
【问题描述】:
我有一组坐标 (x, y) 作为 csv 文件中的数据。我想将这些 x 和 y 作为元组传递给 RDD[(Double, Double)] 并将其命名为点。我尝试了以下方法,但由于某种原因,我收到一条错误消息。 “构造函数无法实例化为预期类型,找到:Array[T],必需:String”。
// Load the data
val data = sc.textFile("data.csv")
// Read the data as an RDD[(Double, Double)]
val points = data.map(line => line.split(",").map{ case Array(x, y) => (x.toDouble, y.toDouble)} )
编辑:有什么方法可以过滤这些点,以便我可以处理为空的值(如果数据集中的 x 或 y 或两者都为空)?本质上,我想检查元组是否总是包含 2 个元素。我试过这样的事情
val points = data.map(line => line.split(",").filter(!_.isEmpty)).map{ case Array(x, y) => (x.toDouble, y.toDouble)}.filter(_.size > 1)
但我得到一个错误类型不匹配,预期:(双,双)=>布尔,实际:(双,双)=>任何
【问题讨论】:
标签: scala apache-spark tuples rdd