我是新来的蜂巢。 我已经成功设立的发展宗旨,在它的上面一个单节点的Hadoop集群,我已经安装了Hive和Pig。
我在蜂巢中创建一个虚拟表:
create table foo (id int, name string);
现在,我想将数据插入此表。 我可以一次添加数据,就像SQL的一个记录? 好心帮我类似的命令:
insert into foo (id, name) VALUES (12,"xyz);
另外,我有一个包含格式数据的csv文件:
1,name1
2,name2
..
..
..
1000,name1000
我怎么能这样的数据加载到虚表?
Answer 1:
我认为最好的方法是:
A)将数据复制到HDFS(如果它已不存在)
b)在您的CSV这样创建外部表
CREATE EXTERNAL TABLE TableName (id int, name string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION 'place in HDFS';
c)你可以开始使用表名已被发出查询到它。
d)如果您想将数据插入到其他蜂巢表:
insert overwrite table finalTable select * from table name;
Answer 2:
还有在从终端一次插入1个记录没有直接的方法,但是,这里有一个简单直接的解决方法,当我想要测试一些东西,我通常使用:
假设t
是具有至少1结果的表。 不要紧,什么类型或列数。
INSERT INTO TABLE foo
SELECT '12', 'xyz'
FROM t
LIMIT 1;
Answer 3:
蜂巢显然支持INSERT ... VALUES在蜂巢0.14开始。
请参阅在节“将插入到从SQL表”: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML
Answer 4:
什么都数据已插入到一个文本文件或日志文件,它可以把一个路径在HDFS中,然后在蜂巢如下编写查询
hive>load data inpath<<specify inputpath>> into table <<tablename>>;
例:
hive>create table foo (id int, name string)
row format delimited
fields terminated by '\t' or '|'or ','
stored as text file;
table created..
DATA INSERTION::
hive>load data inpath '/home/hive/foodata.log' into table foo;
Answer 5:
插入喜欢的ad-hoc值(12,“XYZ),这样做:
insert into table foo select * from (select 12,"xyz")a;
Answer 6:
这是一个蜂巢的限制 。
它插入后1.You不能更新数据
2.有没有“插入表格值...”语句
3.You只能使用批量负载加载数据
4.There不是命令“从删除”
5.You只能做批量删除
但你还是要插入从蜂巢控制台记录比你能做到从statck选择 。 参照此
Answer 7:
你可以试试这个,我已经发展到生成CSV文件蜂巢脚本的工具。 以下是有关的文件是如何生成的几个例子。 工具- https://sourceforge.net/projects/csvtohive/?source=directory
选择使用浏览一个CSV文件,并设置Hadoop的根目录例如:/用户/ bigdataproject /
工具生成的Hadoop脚本所有CSV文件,下面是产生的Hadoop脚本样本插入到CSV的Hadoop
#!/bin/bash -v
hadoop fs -put ./AllstarFull.csv /user/bigdataproject/AllstarFull.csv hive -f ./AllstarFull.hive
#!/bin/bash -v
hadoop fs -put ./AllstarFull.csv /user/bigdataproject/AllstarFull.csv hive -f ./AllstarFull.hive
Hadoop的FS -put ./Appearances.csv /user/bigdataproject/Appearances.csv 蜂巢-f ./Appearances.hive
Hadoop的FS -put ./AwardsManagers.csv /user/bigdataproject/AwardsManagers.csv 蜂巢-f ./AwardsManagers.hive
产生的蜂巢脚本示例
CREATE DATABASE IF NOT EXISTS lahman;
USE lahman;
CREATE TABLE AllstarFull (playerID string,yearID string,gameNum string,gameID string,teamID string,lgID string,GP string,startingPos string) row format delimited fields terminated by ',' stored as textfile;
LOAD DATA INPATH '/user/bigdataproject/AllstarFull.csv' OVERWRITE INTO TABLE AllstarFull;
SELECT * FROM AllstarFull;
由于维杰
Answer 8:
这是从版本蜂巢0.14支持
INSERT INTO TABLE pd_temp(部门,制造,成本,ID,asmb_city,asmb_ct,零售)VALUES( '生产', '泰',10,99202, '北卡罗莱纳', '美国',20)
Answer 9:
您可以使用下面的代码行把值插入到现有的表。 下面的表格是db_name.table_name有两列,而我将“全部”,“完成”在表中的行。
insert into table db_name.table_name
select 'ALL','Done';
希望这是有益的。
Answer 10:
Hadoop的文件系统不支持数据附加到现有的文件。 虽然,您可以加载CSV文件导入HDFS,告诉蜂房把它作为外部表。
Answer 11:
用这个 -
create table dummy_table_name as select * from source_table_name;
这将创建上提供的新表与现有数据source_table_name
。
文章来源: Inserting Data into Hive Table