2016-12-06 39 views
0

我有固定寬度文件具有5個固定寬度列。這是文件的結構。 {col1:3char, col2:35char, col3:3char, col4:11char, col5:4char}。這裏是示例文件無法使用SerDe加載具有固定寬度文件的配置單元表

111 SagarKhatavkar      030  9999ABIT 

112 VishalKataria      028  9999ABIT 

113 GauravSomvanshi     032  9999ABIT 

114 SonalKartekiya      029  9999ABIT 

因此,正如其他職位我建議使用正則表達式。這是我創建的DDL。

CREATE TABLE emp (emplid STRING, name STRING, age String, salary String, dept STRING) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
WITH SERDEPROPERTIES (
    "input.regex" = "(.{4})(.{35})(.{3})(.{11})(.{4})", 
    "output.format.string" = "%1$s %2$s %3$s %4$s %5$s" 
    ) 

從本地使用負載加載後,此表中的數據將所有值都設置爲NULL。

load data local inpath '/home/test1/emp.txt' into table emp; 

Running select on the table 
hive> select * from emp; 

OK 

NULL NULL NULL NULL NULL 

NULL NULL NULL NULL NULL 

NULL NULL NULL NULL NULL 

NULL NULL NULL NULL NULL 

Time taken: 0.959 seconds, Fetched: 4 row(s) 

請告知DDL有什麼問題?我正在使用2.4.2.0-258版本的Hive。

回答

0

我得到了問題。第一列數據存在問題。該文件應該有57個字節。否則,它會將整行標記爲NULL。

相關問題