我有一个关于opencsvserde和simplelazyserde的配置单元中的tblproperty的问题。
存储在文本文件中的数据文件(由sqoop生成)
表属性
将数据存储为opencsvserde
分离器 |
引用人 "
逃逸者 \\
问题是 null
值显示为空字符串 ""
. 然后我发现了这个
使用opencsvserde-hive将具有null的列写入某个字符串
我试着继续讲这个主题,但有一个问题 |
存储在内容中,则列将发生移动。
创建opencsvserde表
CREATE TABLE `opencsv_serde`(
`a` string,
`b` string,
`c` string
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'quoteChar'='\"',
'separatorChar'='|',
'escapeChar'='\\'
)
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
创建lazysimpleserde表(我认为quotechar不起作用)
CREATE TABLE `lazysimple_serde`(
`a` string,
`b` string,
`c` string
)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
'field.delim'='|',
'serialization.format'='|',
'escapeChar'='\\',
'quoteChar'='\"'
)
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
TBLPROPERTIES('serialization.null.format'='');
将数据插入 opencsv_serde
```
insert into opencsv_serde
select "a|a", "b", '"c|c"' union all
select "d|d", "e", null;
从中选择数据 `opencsv_serde` 来自opencsv\u serde的结果
从插入数据 `opencsv_serde` 至 `lazysimple_serde` ```
insert into lazysimple_serde
select * from opencsv_serde
检查结果来自 lazysimple_serde
来自Lazyu serde
在lazysimpleserde中发现列移动
我需要知道如何在opencsvserde中存储null或在lazysimpleserde中防止列移动
谢谢您
暂无答案!
目前还没有任何答案,快来回答吧!