我有下一个DataFrame:
df.show()
+---------------+----+
| x| num|
+---------------+----+
|[0.1, 0.2, 0.3]| 0|
|[0.3, 0.1, 0.1]| 1|
|[0.2, 0.1, 0.2]| 2|
+---------------+----+此DataFrame具有以下列的数据类型:
df.printSchema
root
|-- x: array (nullable = true)
| |-- element: double (containsNull = true)
|-- num: long (nullable = true)目前,我尝试将DataFrame中的DataFrame转换为FloatArray。我在udf的下一次声明中这样做:
val toFloat = udf[(val line: Seq[Double]) => line.map(_.toFloat)]
val test = df.withColumn("testX", toFloat(df("x")))此代码目前不起作用。有人能和我分享如何改变DataFrame的数组类型吗?
我想要的是:
df.printSchema
root
|-- x: array (nullable = true)
| |-- element: float (containsNull = true)
|-- num: long (nullable = true)这个问题是基于问题How tho change the simple DataType in Spark SQL's DataFrame
发布于 2016-10-10 14:45:43
你的udf被错误地宣布了。你应该把它写成如下:
val toFloat = udf((line: Seq[Double]) => line.map(_.toFloat))https://stackoverflow.com/questions/39960480
复制相似问题