如果我试图在cab文件上创建impala外部表,该表是以管道分隔的,并且只有很少的列包含在“”中,双引号还包含分隔符|管道,那么我该怎么做呢。Impala 不支持serde。还有别的办法吗?请在下面找到示例数据123 |阿比Git|“| | a | b |”
jrcvhitl1#
在构造的文本数据文件中,不要将字符串值用引号括起来。如果需要在字段值中包含分隔符,例如,要在csv格式的数据文件中放置带逗号的字符串值,请在create table语句中使用转义by子句指定转义符,并在需要转义的任何分隔符之前插入该字符(在文本文件中)。https://impala.apache.org/docs/build/html/topics/impala_txtfile.html
kninwzqo2#
您可以通过文件浏览器将cab文件加载到hdfs中。然后可以从hdfs中读取并为给定的文件指定分隔符—在本例中,分隔符就是管道。使用以下与您的文件相关的语句应该可以正常工作:
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] db_name.table_name ROW FORMAT DELIMITED BY '|' LOCATION 'hdfs_path'
这里的位置只是hdfs中cab文件的位置。
2条答案
按热度按时间jrcvhitl1#
在构造的文本数据文件中,不要将字符串值用引号括起来。如果需要在字段值中包含分隔符,例如,要在csv格式的数据文件中放置带逗号的字符串值,请在create table语句中使用转义by子句指定转义符,并在需要转义的任何分隔符之前插入该字符(在文本文件中)。
https://impala.apache.org/docs/build/html/topics/impala_txtfile.html
kninwzqo2#
您可以通过文件浏览器将cab文件加载到hdfs中。然后可以从hdfs中读取并为给定的文件指定分隔符—在本例中,分隔符就是管道。使用以下与您的文件相关的语句应该可以正常工作:
这里的位置只是hdfs中cab文件的位置。