如何在Spark SQL的(java)DataFrame中更改列类型?

时间:2019-01-22 09:58:44

标签: java apache-spark

我正在尝试使用java在spark sql中将列数据类型从long转换为int,我已经在scala中看到了一些示例并进行了尝试,但是,它不起作用

df.withColumn("is_open",  toInt("is_open"));  

我需要在哪里更改。 预先感谢

2 个答案:

答案 0 :(得分:2)

您可以使用 cast 功能。

scala> val df = spark.range(10)
df: org.apache.spark.sql.Dataset[Long] = [id: bigint]

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

scala> df.withColumn("new_col", col("id").cast("string"))
res4: org.apache.spark.sql.DataFrame = [id: bigint, new_col: string]

答案 1 :(得分:0)

df = df.withColumn("is_open", df.col("is_open").cast("int"));

请注意,此强制转换是在上一步计算数据之后应用的。如果选择了上一步或类似步骤,它将首先计算为原始类型,然后在下一步中转换为新类型。这不会解决选择原始类型的问题。