如何在Impala中读取csv,其中双引号中的字段包含分隔符

时间:2018-01-23 09:45:42

标签: impala

如果我尝试在cab文件上创建impala外部表,该文件是由管道分隔的,并且在“”中包含的列很少,“双引号”也包含分隔符|管道,我该怎么办呢。

黑斑羚不支持Serde。 还有其他办法吗?请在下面找到示例数据

123 |作者Abhijit | “|| A | B |”

2 个答案:

答案 0 :(得分:0)

您可以通过文件浏览器将cab文件加载到hdfs中。然后,您可以从hdfs读取并为给定文件指定分隔符 - 在这种情况下,您的分隔符将是管道。使用与您的文件相关的以下语句应该可以正常工作:

CREATE [EXTERNAL] TABLE [IF NOT EXISTS]
db_name.table_name

ROW FORMAT DELIMITED BY '|'

LOCATION 'hdfs_path'

此处的位置只是您在hdfs中的cab文件的位置。

答案 1 :(得分:0)

不要在构造的文本数据文件中用引号括起字符串值。如果需要在字段值中包含分隔符,例如将带有逗号的字符串值放在CSV格式的数据文件中,请在CREATE TABLE语句中使用ESCAPED BY子句指定转义字符,然后插入该字符紧接在任何需要转义的分隔符之前(在您的文本文件中)。

https://impala.apache.org/docs/build/html/topics/impala_txtfile.html