Mar*_*ink 46 hadoop hbase hive delimiter hdfs
我正在尝试将CSV文件加载到Hive表中,如下所示:
CREATE TABLE mytable
(
num1 INT,
text1 STRING,
num2 INT,
text2 STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";
LOAD DATA LOCAL INPATH '/data.csv'
OVERWRITE INTO TABLE mytable;
Run Code Online (Sandbox Code Playgroud)
csv由逗号(,)分隔,如下所示:
1, "some text, with comma in it", 123, "more text"
Run Code Online (Sandbox Code Playgroud)
这将返回损坏的数据,因为第一个字符串中有一个','.
有没有办法设置文本分隔符或让Hive忽略字符串中的','?
我无法更改csv的分隔符,因为它是从外部源中提取的.
lib*_*ack 32
如果可以重新创建或解析输入数据,则可以为CREATE TABLE指定转义字符:
ROW FORMAT DELIMITED FIELDS TERMINATED BY "," ESCAPED BY '\\';
Run Code Online (Sandbox Code Playgroud)
将此行接受为4个字段
1,some text\, with comma in it,123,more text
Run Code Online (Sandbox Code Playgroud)
wrs*_*der 22
从Hive 0.14开始,CSV SerDe是Hive安装的标准部分
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
(参见:https://cwiki.apache.org/confluence/display/Hive/CSV+Serde)