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
是一个布尔变量,而聚合不能应用于布尔值。Spark中是否有一个函数可以将Spark数据帧的整列的true
值转换为1
,并将false
转换为0
。
我尝试了以下方法(来源: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的函数。
感谢任何形式的帮助。
https://stackoverflow.com/questions/47042278
复制相似问题