创建HIVE表我想创建一个多串字符HIVE表作为分隔符如多字符分隔符
CREATE EXTERNAL TABlE tableex(id INT, name STRING)
ROW FORMAT delimited fields terminated by ','
LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION '/user/myusername';
我想有分隔成多串像“〜*”。
创建HIVE表我想创建一个多串字符HIVE表作为分隔符如多字符分隔符
CREATE EXTERNAL TABlE tableex(id INT, name STRING)
ROW FORMAT delimited fields terminated by ','
LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION '/user/myusername';
我想有分隔成多串像“〜*”。
FILELDS TERMINATED BY
不支持多字符分隔符。要做到这一点,最简单的方法是使用RegexSerDe
:
CREATE EXTERNAL TABlE tableex(id INT, name STRING)
ROW FORMAT 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "^(\\d+)~\\*(.*)$"
)
STORED AS TEXTFILE
LOCATION '/user/myusername';
感谢Hari,我知道SerDe。但SerDe的问题是我无法在SSMS上使用Hive Tables创建链接服务器连接。你是如何解决这个问题的? –
我还没有在SSMS上工作,所以我不能肯定地说。但是你为什么认为这是SerDe的问题?我会认为这是一个单独的问题,不是吗? –
我有一个类似的问题,并能够成功地用这个答案建立一个表,但遇到聚合问题在查询时间。一些挖掘和我结束了通过更改“org.apache.hadoop.hive.contrib.serde2.RegexSerDe”解析为“org.apache.hadoop.hive.serde2.RegexSerDe” – jlemaitre
请使用MultiDelimitSerde
CREATE EXTERNAL TABlE tableex(id INT, name STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'
WITH SERDEPROPERTIES ("field.delim"="~*")
STORED AS TEXTFILE
LOCATION '/user/myusername';
并再次,一个SQL问题,以多余的ALL-CAPS TITLE。吉兹。 – 2013-09-21 10:21:45