Hadoop - 定义和处理数据,没有分度,某些列之间没有空格/空格



我是Hadoop的新手,并试图在hive中导入文件。我使用的源数据在某些列之间没有分量表。

例:

0000856214AB25    256 T PL1423AS ......
2563458547CD12   748 S  AK2523YU ... and so on...

我已经从大型机以txt格式导入了这个文件。 我有固定字符数的字段第一列(1-10),第二列(11-12),第三列(13-14))

我想要的结果是读取此原始数据,如下所示:

   1st column - 0000856214
   2nd column - AB
   3rd column - 25 
   4th column - 256
   5th column - T
   6th column - PL
   7th column - 1423AS

如何使用 hive 导入此数据?

你能试试这个吗?

输入.txt

0000856214AB25    256 T PL1423AS
2563458547CD12   748 S  AK2523YU

使用正则表达式创建配置单元表:

hive> CREATE TABLE test_regex(
    >f1 STRING,f2 STRING,
    >f3 STRING,f4 STRING,
    >f5 STRING,f6 STRING,
    >f7 STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
    >WITH SERDEPROPERTIES ("input.regex" = 
    >"([0-9]{10})([A-Z]{2})([0-9]{2})\s+([0-9]{3})\s+([A-Z]{1})\s+([A-Z]{2})([A-Z0-9]{6})",
    >"output.format.string" = "%1$s %2$s %3$s %4$s %5s %6s %7s")
    >STORED AS TEXTFILE;
OK
Time taken: 0.056 seconds

数据加载:

hive> load data local inpath 'input.txt' overwrite into table test_regex;
OK
Time taken: 0.183 seconds

列选择:

hive> select f1,f3,f5,f7 from test_regex;
OK
0000856214  25  T   1423AS
2563458547  12  S   2523YU
hive> select *from test_regex;
OK
0000856214  AB  25  256 T   PL  1423AS
2563458547  CD  12  748 S   AK  2523YU
Time taken: 0.094 seconds

感谢Sivasakthi Jayaraman的解决方案

我找到了最后一个错误的解决方案。

  1. 下载罐hive-contrib-0.8.1.jar
    (就我而言,我在/usr/lib/hive/lib/路径上遇到了hive-contrib-0.12.0-cdh5.0.2.jar


  2. ADD JAR /home/user17/hive/hive-contrib-0.8.1.jar(就我而言 - ADD JAR /usr/lib/hive/lib/hive-contrib-0.12.0-cdh5.0.2.jar

  3. 您将看到它将被添加。

现在

select f1 from test_regex;

0000856214

2563458547

(如预期的那样)

相关内容

  • 没有找到相关文章

最新更新