gpt4 book ai didi

scala - 使用约束将 Apache Spark (Scala) 数据框中的 bool 列转换为数值列?

转载 作者:行者123 更新时间:2023-12-01 08:49:13 24 4
gpt4 key购买 nike

 val inputfile = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true")
.option("inferSchema", "true")
.option("delimiter", "\t")
.load("data")
inputfile: org.apache.spark.sql.DataFrame = [a: string, b: bigint, c: boolean]
val outputfile = inputfile.groupBy($"a",$"b").max($"c")

上面的代码失败,因为 c是一个 bool 变量,聚合不能应用于 bool 值。 Spark 中是否有转换 true 的函数值到 1false0对于 Spark 数据框的完整列。

我尝试了以下(来源: How to change column types in Spark SQL's DataFrame?)
 val inputfile = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true")
.option("inferSchema", "true")
.option("delimiter", "\t")
.load("data")
val tempfile =inputfile.select("a","b","c").withColumn("c",toInt(inputfile("c")))
val outputfile = tempfile.groupBy($"a",$"b").max($"c")

以下问题: Casting a new derived column in a DataFrame from boolean to integer PySpark 的答案,但我想要一个专门用于 Scala 的函数。

感谢任何形式的帮助。

最佳答案

您不需要使用 udf 来执行此操作。如果要将 bool 值转换为 int ,您可以将该列类型转换为 int

val df2 = df1
.withColumn("boolAsInt",$"bool".cast("Int")

关于scala - 使用约束将 Apache Spark (Scala) 数据框中的 bool 列转换为数值列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47042278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com