我有固定宽度文件,有5个固定宽度列。这是文件的结构。 {col1:3char, col2:35char, col3:3char, col4:11char, col5:4char}
。这是示例文件
111 SagarKhatavkar 030 9999ABIT
112 VishalKataria 028 9999ABIT
113 GauravSomvanshi 032 9999ABIT
114 SonalKartekiya 029 9999ABIT
正如其他帖子所建议的那样,我使用RegEx。这是我创建的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 :(得分:0)
我遇到了这个问题。第一列数据存在问题。该文件应该有57个字节。否则,它会将整行标记为NULL。