【发布时间】:2019-09-03 19:18:28
【问题描述】:
我在这里尝试实现的是对 Dataframe 中的所有元素进行分组,然后将它们的所有多个值聚合到一个包含 list(map()) 值的列中。
val sampleDF = baseDF
.groupBy(
Yyyy,
MmDd,
SampleField)
.agg(
functions.collect_list(
functions.map(
Selectors.selectColumn(Name),
Selectors.selectColumn(Surname)
)
)
)
但是,当尝试执行该代码时,会显示以下错误。
java.lang.RuntimeException: Cannot use null as map key!
为什么值是否为 null 很重要?它是如何伪装成钥匙的?
我想获得的一个简短示例是...
2019, 0101, "sampleField", List(Map(name -> Sample, surname -> Sample), Map(name -> Sample2, surname -> Sample2))
我的理解是,它将列名作为键(永远不会为空),然后无论如何都应用该值。
【问题讨论】:
标签: apache-spark apache-spark-sql