首页 > 解决方案 > 如何从 Spark 数据框中的数组中获取统计信息?

问题描述

我正在使用数据框

    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));;

有什么帮助吗?

标签: scalaapache-sparkspark-dataframe

解决方案


你可以这样做

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

explode函数应用于数组字段,在这种情况下既不是数组key_value也不key是数组。


推荐阅读