使用SQOOP将数据从HDFS复制到配置单元

时间:2018-04-29 07:26:34

标签: hadoop hive hdfs sqoop

我想将数据从HDFS复制到hive表。我尝试下面的代码,但它不会抛出任何错误,数据也不会复制在提到的配置表中。以下是我的代码:

sqoop import --connect jdbc:mysql://localhost/sampleOne \
--username root \
--password root \
--external-table-dir "/WithFields" \
--hive-import \
--hive-table "sampleone.customers"   

其中sampleone是hive中的数据库,而customers是hive中新创建的表,--external-table-dir是我想要在hive表中加载数据的HDFS路径。我在上面的代码中还缺少什么?

1 个答案:

答案 0 :(得分:0)

如果数据位于HDFS,则您无需Sqoop填充Hive表。执行此操作的步骤如下:

这是HDFS中的数据

# hadoop fs -ls /example_hive/country
/example_hive/country/country1.csv

# hadoop fs -cat /example_hive/country/*
1,USA
2,Canada
3,USA
4,Brazil
5,Brazil
6,USA
7,Canada

这是Hive表创建DDL

CREATE TABLE sampleone.customers
(
  id int, 
  country string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

验证Hive表为空

hive (sampleone)> select * from sampleone.customers;
<no rows>

加载配置单

hive (sampleone)> LOAD DATA INPATH '/example_hive/country' INTO TABLE sampleone.customers;

验证Hive表有数据

hive (sampleone)> select * from sampleone.customers;
1   USA
2   Canada
3   USA
4   Brazil
5   Brazil
6   USA
7   Canada

注意:此方法会将数据从/example_hive/country上的HDFS位置移至Hive仓库目录(将再次位于HDFS)支持桌子。