Scala 从DF中的现有属性值添加数组[long]类型的属性
我使用的是spark 2.0,有一个用例需要将列的属性类型从string转换为Array[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 | +-------
根目录
|--唯一\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,感谢您接受和支持:)