如何为特定列创建具有固定记录长度的配置单元表?我的数据是:
ROW1~|`900~|`3103~|`2015~|`AA~|`1002003829 ROW2~|`900~|`3103~|`2015~|`BB~|`1002005103 ROW3~|`900~|`3103~|`2015~|`CC~|`1002003829 ROW4~|`900~|`3103~|`2015~|`DD~|`1002003829 ROW5~|`900~|`3103~|`2015~|`FF~|`1002003829
bprjcwpo1#
这可以通过 ROW FORMAT SERDE 选择和使用 RegexSerDe 例如:
ROW FORMAT SERDE
RegexSerDe
CREATE TABLE event ( code STRING, location STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "([^]{4}) ([^]*)" ) STORED AS TEXTFILE;
指定 code 定长字段 4 .参考文献:相关语言手册ddl部分gettingstarted行格式serde示例固定长度列使用serde的示例
code
4
xzabzqsa2#
1) 所有字段必须为字符串。2) 在这种情况下,所有字段的大小都固定为10个字符,并且没有字段分隔符。3) 如果写入,output.format.string将以读取的格式输出记录。
CREATE EXTERNAL TABLE test(field1 STRING, field2 STRING, field3 STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "(.{10})(.{10})(.{10})", "output.format.string" = "%1$s%2$s%3$s" ) LOCATION '/path/to/table';
2条答案
按热度按时间bprjcwpo1#
这可以通过
ROW FORMAT SERDE
选择和使用RegexSerDe
例如:指定
code
定长字段4
.参考文献:
相关语言手册ddl部分
gettingstarted行格式serde示例
固定长度列使用serde的示例
xzabzqsa2#
1) 所有字段必须为字符串。
2) 在这种情况下,所有字段的大小都固定为10个字符,并且没有字段分隔符。
3) 如果写入,output.format.string将以读取的格式输出记录。