使用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
如何在表格中附加数据?
答案 0 :(得分:36)
您可以通过两种方式将新数据插入表格。
答案 1 :(得分: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的次数。
但是,如果你没有'创建任何表,您将不得不使用上述答案中的文件复制或加载数据命令加载数据。
答案 2 :(得分:3)
尝试在数据中使用单引号:
insert into table test_hive values ('1','puneet');
答案 3 :(得分:1)
如果表没有分区,那么代码将是
插入表table_name
中,从another_table(source table)
中选择col_a,col_b,col_c
-在这里可以应用任何条件,例如限制,分组依据,排序依据等...
如果表具有分区,则代码将为
设置hive.exec.dynamic.partition = true;
设置hive.exec.dynamic.partition.mode = nonstrict;
插入表table_name
分区(partition_col1
,paritition_col2
)中
选择col_a,col_b,col_c,partition_col1,partition_col2
来自another_table(source table)
-在这里可以应用任何条件,例如限制,分组依据,排序依据等...
答案 4 :(得分:0)
我遇到了类似的问题所以我使用impala将单行插入到我的表中,它适用于同一个查询。这肯定会有用。
答案 5 :(得分:0)
尽管有一个可接受的答案,但我想补充一点,从Hive 0.14开始,允许记录级别的操作。正确的语法和查询为:
INSERT INTO TABLE tweet_table VALUES ('data');