scala - 如何从 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));;
有什么帮助吗?
解决方案
你可以这样做
import spark.implicits._
df.select($"key_value.key").distinct.count
该explode
函数应用于数组字段,在这种情况下既不是数组key_value
也不key
是数组。
推荐阅读
- reactjs - 在同一域上组织和部署多个 SPA
- xcode - 有谁知道在哪里可以获得适用于 xcode 10 和 swift 4.2 的 RxSwift Pod?
- powershell - 如何使用 Powershell 创建正确的 do-while 循环
- scala - 将不纯函数转换为纯函数改进 - Scala
- excel - 根据条件复制整行并粘贴到 sheet2 的公式
- python - TemplateDoesNotExist 与 Django-Fobi
- c++ - C++ 如何从虚拟类的模板化子类中获取数据?
- reactjs - Chartist Timeseries 固定轴时间标签
- authentication - 在身份验证期间终止与节点的连接 - kafka
- xml - 警告:类型受到可能阻碍此类型实例的完整往返的方面模式的限制