Как получить статистику из массива в кадре данных Spark? - PullRequest
0 голосов
/ 06 мая 2018

Я работаю с фреймом данных

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

любая помощь?

1 Ответ

0 голосов
/ 06 мая 2018

Вы могли бы сделать это

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

функция explode применяется к полям массива, в этом случае key_value или key не являются массивом.

...