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

How to get statistic from array in a 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]

我想获取我的数据框中不同键的数量,因此我尝试使用 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));;

有什么帮助吗?

你可以这样做

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

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