Scala中使用字符串数组执行DataFrame的groupBy统计报错,求排查
问题解答
你的错误出在groupBy的参数传递逻辑上:
- 你用
keys.mkString(",")把数组拼接成了单个字符串"Col1,Col2",Spark会把这个字符串当作一个独立的列名去查找,而你的DataFrame里显然不存在名为Col1,Col2的列,因此会抛出列不存在的错误。
Spark的groupBy方法支持直接接收字符串数组作为分组依据,只需要用Scala的可变参数展开语法:_*把数组传递进去即可,正确代码如下:
val keys = Array("Col1", "Col2") val grouppedByDf = myDf.groupBy(keys:_*).count
keys:_*的作用是将数组keys中的每个元素单独传递给groupBy(该方法接受String*类型的可变参数),这样Spark就会按照Col1和Col2两列进行分组,之后调用count就能得到正确的分组统计结果。
内容的提问来源于stack exchange,提问作者ConfusedDeveloper
相关产品推荐
相关产品推荐

