我正在尝试对SharkScala
执行操作。我正在创建一个 RDD,如下所示:
val tmp: shark.api.TableRDD = sc.sql2rdd("select duration from test")
我需要将其转换为RDD[Array[Double]]
. 我试过toArray
了,但它似乎不起作用。
我还尝试将其转换为Array[String]
然后使用map
如下转换:
val tmp_2 = tmp.map(row => row.getString(0))
val tmp_3 = tmp_2.map { row =>
val features = Array[Double] (row(0))
}
但这给了我一个RDD[Unit]
不能在函数中使用的 Spark。还有其他方法可以进行这种类型转换吗?
编辑我也尝试过使用toDouble
,但这给了我一个RDD[Double]
类型,而不是RDD[Array[Double]]
val tmp_5 = tmp_2.map(_.toDouble)
编辑2:
我设法做到了如下:
数据样本:
296.98567000000003
230.84362999999999
212.89751000000001
914.02404000000001
305.55383
首先创建了一个 Spark Table RDD。
val tmp = sc.sql2rdd("select duration from test")
我利用将getString
其翻译为 a RDD[String]
,然后将其转换为RDD[Array[Double]]
.
val duration = tmp.map(row => Array[Double](row.getString(0).toDouble))