我有许多 csv 文件正在导入到 Hive 中,并且我发现新行的 escapeChar 会被触发,即使它位于引用字段(即我的 quoteChar)内。有什么简单的方法可以解决这个困境吗?
Line1field1 text,Line1field2 text,”Line1field3 text \n with new line”\n
Line2field1 text,”Line2field2 text, with comma”
Hive 中无法使用文本格式修复它。
OpenCSVSerDe 不处理嵌入的换行符,请参阅此文档
CSV、JSON 等文本格式不允许嵌入换行符,而使用 RegexSerDe、OpenCSVSerDe、JSONSerDe、LasySimpleSerDe 等文本格式的 SerDe 不处理嵌入换行符。
您可以以二进制格式存储嵌入的换行符:ORC、Parquet、Avro,但在不同的查询工具中,换行符会导致换行和移位,但如果在查询中以二进制格式存储,您可以用某些内容替换换行符。对于文本格式这是不可能的,因为记录读取器读取行而 serde 接收单独的行。
解决方案是在加载到 hive 之前转换 CSV,并用其他内容替换换行符,或者如果可能的话使用二进制格式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)