hive - 在 Hive 中将空白转换为 NULL

标签 hive impala

我试图通过设置属性 'serialization.null.format' = '' 将源文件中的空白值转换为配置单元表中的 NULL。我在配置单元中编写的查询是:

create table test(a int, b string) stored as parquet TBLPROPERTIES('serialization.null.format'='');

然后通过 impala 向其中插入值,如下所示:

insert overwrite table test values (1, ''), (2, 'b');

结果显示如下:

| a | b |


| 1 |   |

| 2 | b |

有人可以帮我解决为什么空白没有转换为 NULL 吗?

最佳答案

问题是 Parquet SerDe。查看问题 https://issues.apache.org/jira/browse/HIVE-12362 .

说明如下:

create table src (a string);
insert into table src values (NULL), (''), ('');

0: jdbc:hive2://localhost:10000/default> select * from src;
+-----------+--+
| src.a  |
+-----------+--+
| NULL      |
|                |
|                |
+-----------+--+

create table dest (a string) row format serde 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' stored as INPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat';

alter table dest set SERDEPROPERTIES ('serialization.null.format' = '');
alter table dest set TBLPROPERTIES ('serialization.null.format' = '');
insert overwrite table dest select * from src;

0: jdbc:hive2://localhost:10000/default> select * from test11;
+-----------+--+
| test11.a  |
+-----------+--+
| NULL      |
|                |
|                |
+-----------+--+

关于hive - 在 Hive 中将空白转换为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36354410/

相关文章:

performance - Syncfusion仪表板平台:如何快速创建仪表板?

sql - Impala/SQL 如何将所有其他字段放在 group by 语句中?

sql - Impala/Hive 获取表列表以及创建者和创建日期

python - 获取详细的 Impyla 错误消息

apache-spark - 字符串分区键与整数分区键的 Hive/Impala 性能

sql - 当我们有更多文件时,Hive 不同查询需要时间

Hadoop 生态系统 : Map Reduce needed for Pig/Hive

hadoop - 启动 hive 和 spark 时未发现合适的驱动程序错误

hadoop - HDFS加载数据到Hive的路径

hadoop - 通过 Hue 在 hadoop 中加载大型 csv 只会存储 64MB block