我正在尝试对Shark执行Scala
操作。我正在创建一个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))
}
但是这给了我一个不能在函数中使用的Spark RDD[Unit]
。还有其他方法可以继续进行此类型转换吗?
修改我也尝试使用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
将其翻译为RDD[String]
,然后将其转换为RDD[Array[Double]]
。
val duration = tmp.map(row => Array[Double](row.getString(0).toDouble))