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

问题描述 投票:0回答:3

如果我试图通过 cab 文件创建 impala 外部表,该文件是管道分隔的,并且有几列包含在 "" 双引号中也包含分隔符 |管道,那么我该怎么做呢?

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

123|阿比吉特|“||a|b|”

impala
3个回答
0
投票

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

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

ROW FORMAT DELIMITED BY '|'

LOCATION 'hdfs_path'

这里的位置只是您的 cab 文件在 hdfs 中的位置。


0
投票

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

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


0
投票

如果您已经收到这样的文件,这没有帮助 -

© www.soinside.com 2019 - 2024. All rights reserved.