如果我试图通过 cab 文件创建 impala 外部表,该文件是管道分隔的,并且有几列包含在 "" 双引号中也包含分隔符 |管道,那么我该怎么做呢?
impala 不支持 Serde。 还有其他办法吗?请在下面找到示例数据
123|阿比吉特|“||a|b|”
您可以通过文件浏览器将cab文件加载到hdfs中。然后,您可以从 hdfs 读取并为给定文件指定分隔符 - 在这种情况下,您的分隔符将是管道。使用与您的文件相关的以下语句应该可以正常工作:
CREATE [EXTERNAL] TABLE [IF NOT EXISTS]
db_name.table_name
ROW FORMAT DELIMITED BY '|'
LOCATION 'hdfs_path'
这里的位置只是您的 cab 文件在 hdfs 中的位置。
请勿在您构建的文本数据文件中用引号将字符串值引起来。如果需要在字段值中包含分隔符,例如将带有逗号的字符串值放入 CSV 格式的数据文件中,请在 CREATE TABLE 语句上使用 ESCAPED BY 子句指定转义字符,然后插入该字符紧接在需要转义的任何分隔符之前(在文本文件中)。
https://impala.apache.org/docs/build/html/topics/impala_txtfile.html
如果您已经收到这样的文件,这没有帮助 -