DataFrame 中不能有调用集合操作的地图类型列

问题描述 投票:0回答:2

:org.apache.spark.sql.AnalysisException:在调用集合操作(相交、例外等)的 DataFrame 中不能有映射类型列,但列 map_col 的类型是 map

我有一个配置单元表,其中有一列类型 -

MAP<Float, Float>
。当我尝试在 Spark 上下文中对此表进行插入时,出现上述错误。插入工作正常,无需“独特”。

create table test_insert2(`test_col` string, `map_col` MAP<INT,INT>) 
location 's3://mybucket/test_insert2';

insert into test_insert2 
select distinct 'a' as test_col, map(0,0) as map_col
hive pyspark apache-spark-sql amazon-emr
2个回答
4
投票

尝试将数据帧转换为

.rdd
,然后应用
.distinct
函数。

示例:

spark.sql("select 'a'test_col,map(0,0)map_col 
              union all 
          select 'a'test_col,map(0,0)map_col").rdd.distinct.collect

结果:

Array[org.apache.spark.sql.Row] = Array([a,Map(0 -> 0)])

0
投票

如果您无需地图即可区分唯一行(例如 ID 列),则可以使用

dropDuplicates

dataframe.dropDuplicates(['id'])
© www.soinside.com 2019 - 2024. All rights reserved.