gpt4 book ai didi

python - 如何使用 Group_Map 使用 Python 3 修复 Spark.SQL 中的 "Cannot use null as map key!"错误

转载 作者:可可西里 更新时间:2023-11-01 15:46:02 25 4
gpt4 key购买 nike

我正在使用 Spark.SQL 并尝试使用 MAP 语句创建一个数据透视表,以便将一列的值作为不同的列。

我用这个查询准备了第一个表:

spark.sql("""CREATE TABLE TABLE_01 STORED AS PARQUET AS
select
ROWS,
COLUMNS,
count(*) as NUM_ROWS
from TABLE_00
group by ROWS, COLUMNS
order by ROWS, COLUMNS
""")

想法是将其转换为:

ROWS    COLUMNS NUM_ROWS
VALUE1 COL2 2
VALUE1 COL3 50
VALUE2 COL1 20
VALUE2 COL2 1
VALUE2 COL3 30

进入这个:

                COLUMNS

COL1 | COL2 | COL3
ROWS
------------------------------------------------------
VALUE1 0 (The problem) | 2 | 50

VALUE2 20 | 1 | 30

我在 Python2 中有一个查询曾经有效,但现在我必须更改为 Python3,我快疯了。查询是:

spark.sql("""CREATE TABLE TABLE_02 STORED AS PARQUET AS
select
a.ROWS,
coalesce(sum(a.group_map['COL1']),0) as COL1,
coalesce(sum(a.group_map['COL2']),0) as COL2,
coalesce(sum(a.group_map['COL3']),0) as COL3
from
(
select ROWS, map(COLUMNS,NUM_ROWS) as group_map
from TABLE_01
) a
group by a.ROWS
""")

输出是:java.lang.RuntimeException: Cannot use null as map key!

有什么帮助吗?为什么它适用于 Python2?

谢谢!

最佳答案

您正在尝试定义缺失值,在本例中为 VALUE1,COL1。空值不是返回 Null 值的正确方法,您需要将其定义为 None。因此,您要做的是将 VALUE1、COL1 定义为 None

关于python - 如何使用 Group_Map 使用 Python 3 修复 Spark.SQL 中的 "Cannot use null as map key!"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54652402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com