1

我正在尝试对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))
4

0 回答 0