Scala 从DF中的现有属性值添加数组[long]类型的属性

Scala 从DF中的现有属性值添加数组[long]类型的属性,scala,apache-spark,dataframe,apache-spark-sql,Scala,Apache Spark,Dataframe,Apache Spark Sql,我使用的是spark 2.0,有一个用例需要将列的属性类型从string转换为Array[long] 假设我有一个带有模式的数据框架: 根目录 |--唯一\u id:string(nullable=true) |--第2列:字符串(nullable=true) DF: +----------+---------+ |唯一的| id |列2| +----------+---------+ | 1 | 123 | | 2 | 125 | +-------

我使用的是spark 2.0,有一个用例需要将列的属性类型从string转换为Array[long]

假设我有一个带有模式的数据框架:

根目录
|--唯一\u id:string(nullable=true)
|--第2列:字符串(nullable=true)
DF:

+----------+---------+
|唯一的| id |列2|
+----------+---------+
|  1       |  123    |
|  2       |  125    |
+----------+---------+
现在我想添加一个名为“column3”的数组[long]类型的新列,其值来自“column2” 比如:

根目录
|--唯一\u id:string(nullable=true)
|--第2列:长(nullable=true)
|--第3列:数组(nullable=true)
||--元素:长(containsnall=true)
新DF:

+----------+---------+---------+
|唯一|u id | column2 | column3|
+----------+---------+---------+
|  1       |  123    | [123]   | 
|  2       |  125    | [125]   |
+----------+---------+---------+

我有办法做到这一点吗?

您可以简单地使用
with column
array
函数作为

df.withColumn("column3", array(df("columnd")))
我还看到您正在尝试将
列2
字符串更改为
长的
。一个简单的
udf
函数应该可以做到这一点。所以最终的解决办法是

def changeToLong = udf((str: String) => str.toLong)


val finalDF = df
  .withColumn("column2", changeToLong(col("column2")))
  .withColumn("column3", array(col("column2")))
您还需要导入库作为

import org.apache.spark.sql.functions._

您只需使用
with column
array
函数即可

df.withColumn("column3", array(df("columnd")))
我还看到您正在尝试将
列2
字符串更改为
长的
。一个简单的
udf
函数应该可以做到这一点。所以最终的解决办法是

def changeToLong = udf((str: String) => str.toLong)


val finalDF = df
  .withColumn("column2", changeToLong(col("column2")))
  .withColumn("column3", array(col("column2")))
您还需要导入库作为

import org.apache.spark.sql.functions._

嗨@Ramesh,你在df上查过了吗?我得到了这个错误“error:notfound:value array”,你需要
导入org.apache.spark.sql.functions.\u
听到@Ram这个消息很高兴,谢谢你接受并投票:)嗨@Ramesh,你在df上检查过这个吗?我收到了这个错误“error:notfound:value array”,您需要
导入org.apache.spark.sql.functions.\u
很高兴听到@Ram,感谢您接受和支持:)