hive建表分隔符问题
程序员文章站
2022-07-14 15:32:37
...
默认的分隔符:
hive 默认的字段分隔符为ascii码的控制符\001,建表的时候用fields terminated by ‘\001’,如果要测试的话,造数据在vi 打开文件里面,用ctrl+v然后再ctrl+a可以输入这个控制符\001。按顺序,\002的输入方式为ctrl+v,ctrl+b。以此类推。
指定特定的特殊符号作为分隔符:
CREATE TABLE test(id int, name string )
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
上面使用了’\t’作为了字段分隔符,’\n’作为换行分隔符。特殊字符无需转义
使用多字符作为分隔符:
假设我们使用【##】来作为字段分隔符,【\n】作为换行分隔符,则这里有两个方法:
1、使用MultiDelimitSerDe的方法来实现:
CREATE TABLE test(id int, name string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe' WITH SERDEPROPERTIES ("field.delim"="##")
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
2、使用RegexSerDe的方法实现:
CREAET TABLE test(id int, name string )
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ("input.regex" = "^(.*)\\#\\#(.*)$")
LINES TERMINATED BY '\n'
STORED AS TEXTFILE;
下一篇: 用户权限控制分析