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.
的解决方案
上回答
有道理吗?
您可以在 Hive 中使用 where 子句。
首先将数据加载到 Hive raw table 或 HDFS,然后再次创建 table 并根据 where 子句加载数据。
意思是:
SELECT * 来自 table_reference
WHERE 名称如“%venu%”
按城市分组;
资源:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select
我是 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.
的解决方案有道理吗?
您可以在 Hive 中使用 where 子句。
首先将数据加载到 Hive raw table 或 HDFS,然后再次创建 table 并根据 where 子句加载数据。 意思是:
SELECT * 来自 table_reference WHERE 名称如“%venu%” 按城市分组;
资源:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Select