使用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
如何在表格中附加数据?
如果您已经有一个带有一些数据的表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的次数。
但是,如果您尚未“创建任何表格,则必须使用上述答案中的文件复制或加载数据命令加载数据。
尝试在数据中使用单引号:
insert into table test_hive values ('1','puneet');
如果表没有分区,那么代码将是,
插入表table_name
从another_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_col1
,paritition_col2
)从another_table(source table)
中选择col_a,col_b,col_c,partition_col1,partition_col2
- 可以应用任何条件,如限制,分组,按顺序等...
我遇到了类似的问题所以我使用impala将单行插入到我的表中,它适用于同一个查询。这肯定会起作用。
虽然有一个公认的答案我想补充说,从Hive 0.14开始,允许记录级操作。正确的语法和查询将是:
INSERT INTO TABLE tweet_table VALUES ('data');