首先,我想说,我是 Scala 的新手,我在基本转换格式方面遇到了问题...我希望我能在不久的将来在函数式编程方面取得更好的成绩,如果这是一个愚蠢的问题,那么抱歉
我使用 Spark SQL 进行查询,并在名为“probesGroupby”的变量中获取结果
val probesGroupby = sqlContext.sql("SELECT id_counter as id_counter, co_mac as co_mac, ts_timestamp as ts_timestamp, max(qt_rssi) as qt_rssi, count(*) as qt_tracks " +
" FROM probes GROUP BY id_counter, co_mac, ts_timestamp")
好吧,到这里为止。之后,我需要将数据写入 InfluxDB 数据库,并且 API 需要以下格式:
val probeRequest= Series("probeRequest",
Array("id_counter","co_mac","time","qt_rssi","qt_tracks"),
Array(
Array(row[0],row[1],row[2],row[3], row[4]),
Array(row[0],row[1],row[2],row[3], row[4]),
Array(row[0],row[1],row[2],row[3], row[4]),
...
)
)
assert(None == client.writeSeries(Array(probeRequest)))
如何使用这种格式创建变量“probeRequest”,以便我有一个数组,其中包含查询返回的每行的值?我尝试了一些东西,但似乎不起作用:(
提前谢谢您,
最佳答案
您必须使用 Series
来包装它,但除此之外它就这么简单:
probesGroupby.map(_.toSeq.toArray).collect
或者如果您更喜欢更明确的方法,您可以使用模式匹配:
rdd.map { case Row(idCounter, coMac, time, qtRssi, tTracks) =>
Array(idCounter, coMac, time, qtRssi, tTracks)
} collect
关于arrays - Scala/Spark SQL 数组[行] 到数组(数组(值)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31359742/