将数据插入hive表

问题描述 投票:15回答:6

使用Cygwin发行版,我安装了Hadoop 0.20.3和Hive 0.11.0。

首先,我不明白如何使用Hive CLI:

hive> show tables;

然后输入,没有任何反应。我可以使用hive -e/-f.执行查询

然后,我创建了一个表:

CREATE TABLE tweet_table(
tweet STRING
)
COMMENT 'Table of string'

但是如何将数据插入此表?我看到一些INSERT INTO示例,但是当我尝试时:

INSERT INTO TABLE tweet_table (tweet) VALUES ("data")

我有一个错误:

FAILED: ParseException line 1:30 cannot recognize input near '(' 'tweet' ')' in select clause

如何在表格中附加数据?

database hadoop hive
6个回答
36
投票

您可以通过两种方式将新数据插入表中。

  1. 使用load命令将文件数据加载到表中。 LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename.
  2. 您可以使用select查询将新数据插入表中。 INSERT INTO table tablename1 select columnlist FROM secondtable;

4
投票

如果您已经有一个带有一些数据的表pre_loaded_tbl。您可以使用技巧通过以下查询将数据加载到表中

INSERT INTO TABLE tweet_table 
  SELECT  "my_data" AS my_column 
    FROM   pre_loaded_tbl 
   LIMIT   5;

另请注意,“my_data”独立于pre_loaded_tbl中的任何数据。您可以选择任何数据并写入任何列名称(此处为my_data和my_column)。 Hive不要求它具有相同的列名。但是select语句的结构应该与tweet_table的结构相同。您可以使用limit来确定可以插入tweet_table的次数。

但是,如果您尚未“创建任何表格,则必须使用上述答案中的文件复制或加载数据命令加载数据。


3
投票

尝试在数据中使用单引号:

insert into table test_hive values ('1','puneet');

1
投票

如果表没有分区,那么代码将是,

插入表table_nameanother_table(source table)中选择col_a,col_b,col_c

- 可以应用任何条件,如限制,分组,按顺序等...

如果表是分区,那么代码将是,

set hive.exec.dynamic.partition = true; set hive.exec.dynamic.partition.mode = nonstrict;

插入表table_name分区(partition_col1paritition_col2)从another_table(source table)中选择col_a,col_b,col_c,partition_col1,partition_col2

- 可以应用任何条件,如限制,分组,按顺序等...


0
投票

我遇到了类似的问题所以我使用impala将单行插入到我的表中,它适用于同一个查询。这肯定会起作用。


0
投票

虽然有一个公认的答案我想补充说,从Hive 0.14开始,允许记录级操作。正确的语法和查询将是:

INSERT INTO TABLE tweet_table VALUES ('data');
© www.soinside.com 2019 - 2024. All rights reserved.