首页 > 解决方案 > 使用 SQOOP 将数据从 HDFS 复制到配置单元

问题描述

我想将数据从表中复制HDFS出来hive。我尝试了下面的代码,但它没有抛出任何错误,并且数据也没有复制到提到的配置单元表中。下面是我的代码:

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

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

标签: hadoophivehdfssqoop

解决方案


如果数据在 中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 表

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)。


推荐阅读