csv - 我试图在配置单元中将 csv 文件中的空值设置为零。但是这段代码似乎不起作用。我应该做哪些改变?

标签 csv hadoop hiveql create-table opencsv

这是输入的 .csv 文件

"1","","动画"

"2","勇敢者游戏",""

“”,“脾气暴躁的老人”,“喜剧”

hive 代码

如果电影不存在则创建表(movie_id int,movie_name string,genre string)

行格式 SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'

使用 SERDEPROPERTIES (

"分隔符"= ",",

"quoteChar"= "\"",

"serialization.null.format"= '0'

);

输出

1 动画

2 勇敢者游戏

    Grumpier Old Men        Comedy

最佳答案

csv 中的空字符串被解释为空字符串,而不是 NULL。要在带分隔符的文本文件中表示 NULL,您应该使用“\N”。 Hive 还为您提供了一个表属性“serialization.null.format”,可用于在 Hive SQL 中将您选择的字符视为 null。在您的情况下,它应该是空字符串“”。要将 NULL 转换为零,请使用 NVL(col, 0)COALESCE(col, 0) 函数,具体取决于您的配置单元版本(COALESCE 应该适用于所有版本)。

关于csv - 我试图在配置单元中将 csv 文件中的空值设置为零。但是这段代码似乎不起作用。我应该做哪些改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41215937/

相关文章:

python - 使用字符串日期对 pandas csv 列表进行排序

mysql - 将 MySQL 表导出为 CSV

javascript - 如何在 HTML5 中访问 CSV 平面文件?

hadoop - 在PIG中如何投影包中存在的歧义字段?

hadoop - 为什么 hadoop 在启动任何服务之前要求输入密码?

hadoop - Hive:有条件地截断并加载表

mysql - 获取按日期分组的最近 n 天的活跃用户数量

java - 如何将具有关系的 Java 对象从 .csv 文件导入 MySQL 数据库?

hadoop - 如何从文本文件转换为序列文件?

hive - 如何删除配置单元中的 jar 文件?