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

Hadoop 使用SQOOP将数据从HDFS复制到配置单元,hadoop,hive,hdfs,sqoop,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.customer

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

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

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

如果数据在
HDFS
中,您不需要
Sqoop
来填充
蜂巢
表。执行此操作的步骤如下:

这是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
这是配置单元表创建DDL

CREATE TABLE sampleone.customers
(
  id int, 
  country string
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
验证配置单元表是否为空

hive (sampleone)> select * from sampleone.customers;
<no rows>
验证配置单元表是否有数据

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

注意:此方法将数据从
HDFS
上的
/example\u hive/country
位置移动到支持表的
hive
仓库目录(该目录将再次位于
HDFS
)。只需使用HDFS位置创建配置单元表,或使用hadoop fs-scp将数据复制到现有配置单元表位置即可。commandStack Overflow是一个解决编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的问的地方。是的,我知道这一点。我想有没有办法通过sqoop来传输数据,这就是我尝试的原因。无论如何,谢谢。@Debugger Sqoop在HDFS和配置单元之间不使用。它在JDBC数据库(如Mysql和HDFS)之间使用,可以选择创建或导出配置单元表。@Jagrut您也可以跳过加载步骤,在包含数据的文件夹上创建一个外部表file@cricket_007正确,这是另一种方法-可以创建指向现有HDFS目录的外部配置单元表。问题表明Hive table sampleone.customers已经可用。因此,我建议使用运行命令的方法来填充它。
hive (sampleone)> select * from sampleone.customers;
1   USA
2   Canada
3   USA
4   Brazil
5   Brazil
6   USA
7   Canada