如何从Spark数据帧中的数组中获取统计信息?

时间:2018-05-06 16:32:27

标签: scala apache-spark spark-dataframe

我正在使用数据框

    df.printSchema()
     root
       |-- key_value: struct (nullable = true)
       |    |-- key: string (nullable = true)
       |    |-- value: string (nullable = true)
    df.show(5)
    |key_value
    |[k1,v1]
    |[k1,v2]
    |[k2,v3
    |[k3,v6]
    |[k4,v5]

我想获取My dataframe中不同键的数量,所以我尝试使用explode构建一个包含列键和值的数据帧但是我没有得到结果。

   val f=df.withColumn("k",explode(col("key_value")))
   org.apache.spark.sql.AnalysisException: cannot resolve 'explode(`key_value`)' due to data type mismatch: input to function explode should be array or map type, not StructType(StructField(key,StringType,true), StructField(value,StringType,true));;

任何帮助?

1 个答案:

答案 0 :(得分:1)

你可以这样做

import spark.implicits._    
df.select($"key_value.key").distinct.count

explode函数应用于数组字段,在这种情况下,key_valuekey都不是数组。