我在 hdfs 中存在的文件之上定义了一个表。我正在使用 OpenCSV Serde 从文件中读取。但是,数据中的“\”斜线字符在最终结果集中被省略。
是否有一个我没有正确使用的 hive serde 属性。根据文档,escapeChar = '\' 应该可以解决此问题。但是,问题仍然存在。
CREATE EXTERNAL TABLE `tsr`(
`last_update_user` string COMMENT 'from deserializer',
`last_update_datetime` string COMMENT 'from deserializer')
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'escapeChar'='\',
'quoteChar'='\"',
'separatorChar'=',',
'serialization.encoding'='UTF-8')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://edl/hive/db/tsr'
TBLPROPERTIES (
'COLUMN_STATS_ACCURATE'='{\"BASIC_STATS\":\"true\"}',
'numFiles'='1',
'numRows'='1869',
'rawDataSize'='0',
'serialization.null.format'='',
'totalSize'='144640',
'transient_lastDdlTime'='1524479930')
样本输出:
DomainUser1 , 2017-07-04 19:07:27
预期结果:
Domain\User1 , 2017-07-04 19:07:27
编辑 1:我都尝试过'\\' and '\'
作为 escapeChar 并且都有同样的问题