【发布时间】:2015-01-23 10:43:50
【问题描述】:
我正在尝试根据用户输入创建一个行 (org.apache.spark.sql.catalyst.expressions.Row)。我无法随机创建行。
是否有从List 或Array 创建行的功能。
例如,如果我有一个具有以下格式的.csv 文件,
"91xxxxxxxxxx,21.31,15,0,0"
如果用户输入[1, 2],那么我只需要获取第二列和第三列以及第一列customer_id
我尝试用代码解析它:
val l3 = sc.textFile("/SparkTest/abc.csv").map(_.split(" ")).map(r => (foo(input,r(0)))) `
其中 foo 被定义为
def f(n: List[Int], s: String) : Row = {
val n = input.length
var out = new Array[Any](n+1)
var r = s.split(",")
out(0) = r(0)
for (i <- 1 to n)
out(i) = r(input(i-1)).toDouble
Row(out)
}
输入是一个列表说
val input = List(1,2)
执行此代码我得到 l3 为:
Array[org.apache.spark.sql.Row] = Array([[Ljava.lang.Object;@234d2916])
但我想要的是:
Array[org.apache.spark.sql.catalyst.expressions.Row] = Array([9xxxxxxxxxx,21.31,15])`
必须传递此参数才能在 Spark SQL 中创建架构
【问题讨论】:
标签: scala apache-spark apache-spark-sql