将数据插入Hive表

Tap*_*thi 23 sql hadoop hive insert

我是新手.我已成功设置单节点hadoop集群用于开发目的,除此之外,我已经安装了hive和pig.

我在hive中创建了一个虚拟表:

create table foo (id int, name string);
Run Code Online (Sandbox Code Playgroud)

现在,我想在此表中插入数据.我可以像sql一样一次添加数据吗?请帮我一个类似的命令:

insert into foo (id, name) VALUES (12,"xyz);
Run Code Online (Sandbox Code Playgroud)

另外,我有一个csv文件,其中包含以下格式的数据:

1,name1
2,name2
..
..

..


1000,name1000
Run Code Online (Sandbox Code Playgroud)

如何将这些数据加载到虚拟表中?

Dav*_*man 26

我认为最好的方法是:
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';
Run Code Online (Sandbox Code Playgroud)

c)您可以通过向其发出查询来开始使用TableName.
d)如果要将数据插入其他Hive表:

insert overwrite table finalTable select * from table name;
Run Code Online (Sandbox Code Playgroud)


Mou*_*tta 8

没有直接的方法一次从终端插入1条记录,但是,这是一个简单的直接解决方法,我通常在我想测试时使用:

假设这t是一个至少有1条记录的表.列的类型或数量无关紧要.

INSERT INTO TABLE foo
SELECT '12', 'xyz'
FROM t
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)


Ola*_*laf 0

Hadoop文件系统不支持向现有文件追加数据。不过,您可以将 CSV 文件加载到 HDFS 中并告诉 Hive 将其视为外部表。