2015-06-23 57 views
0

我查看了幾個解決方案,但他們都沒有工作,然後決定在此發佈我的問題。我嘗試在hive中創建一個表,並從String A, "String B"的csv中加載其中的數據。我試圖自己寫正則表達式,但每當我加載數據時,所有的值都是NULL。Hive:使用RegexSerDe定義輸入格式

我create table命令如下: -

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

,我用下面的命令加載數據: -

load data inpath '/path/to/file.csv' into table tab1; 

什麼我做錯了任何想法?

回答

0

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

你可以使用a CSV serde代替(此人知道默認引號字符)修改了規則expression.Try下面的代碼:

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';