Apache spark GROUPBY子句中的sparkSQL映射列

Apache spark GROUPBY子句中的sparkSQL映射列,apache-spark,apache-spark-sql,spark-dataframe,Apache Spark,Apache Spark Sql,Spark Dataframe,我正在将一个查询从配置单元迁移到SparkSQL,但是在Map列中遇到了一个问题 我的问题是 spark.sql(select col1,col2,my_map,count(*) from table group by col1,col2,my_map) 我得到的错误是 `my_map` cannot be used as a grouping expression because its data type map<string,string> is not an orderab

我正在将一个查询从配置单元迁移到SparkSQL,但是在Map列中遇到了一个问题

我的问题是

spark.sql(select col1,col2,my_map,count(*) from table group by col1,col2,my_map)
我得到的错误是

`my_map` cannot be used as a grouping expression because its data type map<string,string> is not an orderable data type.;
`my_map`不能用作分组表达式,因为其数据类型映射不是可排序的数据类型。;
“我的地图”中的键总是不同的。我尝试使用不推荐的HiveContext,但是,这没有帮助。有什么解决办法吗


谢谢

答案在错误响应中。您需要将my_map设置为可订购的数据类型!:)

按地图分组似乎是一个相当微妙的操作。你确定你真的想这么做吗?无论如何,在执行此查询之前,您可以考虑规范化映射(特别是如果您只需要几个键),否则您应该将其来回转换为sql可以轻松处理的另一种格式。@Chobeat我一直在Hive中执行此操作。你知道我如何将它转换成另一种格式吗?元组列表可能是一种选择,我相信它应该可以工作。但要小心,这简直是一件肮脏的工作around@Chobeat如何将映射列从转换为元组列表并将其转换回映射?