Hive Hadoop:需要根据输入文件的条件将数据加载到 table

Hive Hadoop : Need to LOAD data into a table based on conditions on the input file

我是 Hadoop Hive 的新手,刚开始在 hive 中进行基本查询。 我的意图是我有一个输入文本文件(每行有大量记录)。文件的格式是这样的:

1;23;0;;;;1;3;2;1;1;4;5;6;;;;

1;43;6;;;;1;3;2;1;1;4;5;5;;;;

1;53;7;;;;1;3;2;1;1;4;5;2;;;;

(“;”之前的每个整数都有一个含义,我打算把它作为列名放在 Hive table 中 - 每行包含大约 400 个字段)

因此,为了插入这个,我创建了一个 table "test" - 使用以下查询:

CREATE TABLE test (field1 INT, field2 INT, field3 INT, field4 INT, ... field390 INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY "3";

然后我使用 LOAD 查询加载包含记录的文本文件,如下所示:

LOAD DATA LOCAL INPATH '/tmp/test.txt'
OVERWRITE INTO TABLE test;

目前所有字段都被准确地插入到 table 最多 50 个字段中。后来我有不匹配的。

我的输入格式是 - 在 test.txt 的第 50 个字段中,我有一个 INT 编号,它决定了该字段之后要采用的字段数。

示例:

第 50 个字段:2 -> Hive 必须采用下一个 2*10 字段 INT 值并插入 table.

第 50 个字段:1 -> Hive 必须采用下一个 1*10 字段 INT 值并插入 table.其余10个字段可以设置为NULL。

(第 50 个字段的最大值是 2 - 所以我在 table 中为此保留了 2*10 个字段)

在第50+(2*10)个字段之后,数据应该和第50个字段之前一样按顺序正常读取。

我们是否有办法对输入设置条件,以便将数据相应地插入到 Hive 中。

不胜感激。需要一个不会指导我预处理 test.txt 然后提供给 table.

的解决方案

我已尝试在 http://www.knowbigdata.com/page/hive-hadoop-need-load-data-table-based-conditions-input-file#comment-85

上回答

有道理吗?

您可以在 Hive 中使用 where 子句。

首先将数据加载到 Hive raw table 或 HDFS,然后再次创建 table 并根据 where 子句加载数据。 意思是:

SELECT * 来自 table_reference WHERE 名称如“%venu%” 按城市分组;

资源:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select