0

我有具有 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"
     )

使用 load from local 加载此表中的数据后,将所有值设为 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。

4

1 回答 1

0

我得到了这个问题。第一列数据存在问题。该文件应该有 57 个字节。否则,它会将完整的行标记为 NULL。

于 2016-12-06T06:26:31.743 回答