无法使用serde加载具有固定宽度文件的配置单元表

lx0bsm1f  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(404)

我有固定宽度的文件有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"
     )

使用loadfromlocal加载数据后,此表中的所有值都为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。

nmpmafwu

nmpmafwu1#

我有问题。第一列数据有问题。这个文件应该有57个字节。否则,它会将整个行标记为null。

相关问题