如何在opencsvserde中存储空值或避免lazysimpleserde在hive表中使用引号char

piwo6bdm  于 2021-05-31  发布在  Hadoop
关注(0)|答案(0)|浏览(452)

我有一个关于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中防止列移动
谢谢您

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题