Hive:使用RegexSerDe定义输入格式

时间:2015-06-23 16:27:55

标签: regex datatable hive

我看了几个解决方案,但在决定在这里发布我的问题之前,没有一个解决方案。我试图在hive中创建一个表,并从Mary had a little lamb, its fleece was white as snow; And everywhere that Mary went, the lamb was sure to go. 形式的csv中加载数据。我自己尝试编写正则表达式,但每当我加载数据时,所有值都为NULL。

我的create table命令如下: -

String A, "String B"

我正在通过以下命令加载数据: -

create table tab1 (col1 string, col2 string)                    
    ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'     
    WITH SERDEPROPERTIES (                                                 
    "input.regex" = "\"([^\"]*)\",\"([^\"]*)\"$") 

关于我做错了什么想法?

2 个答案:

答案 0 :(得分:0)

您可以使用a CSV serde(默认情况下,这个人知道引号字符)。:

add jar /home/hadoop/hive/lib/csv-serde-1.1.2-0.11.0-all.jar;
create table tab1 (col1 string, col2 string) 
row format serde 'com.bizo.hive.serde.csv.CSVSerde';

答案 1 :(得分:0)

修改了正则表达式。请尝试以下代码。

create table tab (col1 string, col2 string) ROW FORMAT SERDE 
'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES 
("input.regex" = "([^ ]*),\"([^\"]*)\".*");