在将文件从大型机以 ORC 格式加载到 Hadoop 中时,一些数据使用单引号(')加载并保留为双引号(“)。但完整的源文件在单引号(')中。指定使用的自定义分隔符Hive Cobol Serde。
例子:
源数据:
名字 姓氏 地址
Rev 'Har' O'Amy 4031 'B' Ave
加载到 Hadoop 作为,一些具有正确格式(')的数据和一些带有双引号(“)的数据如下:
名字 姓氏 地址
Rev "Har" O"Amy 4031 "B" Ave
可能是什么问题以及如何解决这个问题?
在将文件从大型机以 ORC 格式加载到 Hadoop 中时,一些数据使用单引号(')加载并保留为双引号(“)。但完整的源文件在单引号(')中。指定使用的自定义分隔符Hive Cobol Serde。
例子:
源数据:
名字 姓氏 地址
Rev 'Har' O'Amy 4031 'B' Ave
加载到 Hadoop 作为,一些具有正确格式(')的数据和一些带有双引号(“)的数据如下:
名字 姓氏 地址
Rev "Har" O"Amy 4031 "B" Ave
可能是什么问题以及如何解决这个问题?
一个可能的问题可能是在创建表时给出了分隔符
所以尝试 ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES(“serialization.encoding”='UTF-8'); 同时创建配置单元表,然后加载数据。
如果您希望数据干净,还可以尝试使用此链接中给出的 udf 删除所有特殊字符https://github.com/ogrodnek/csv-serde