首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqoop导入到hdfs和hive有什么不同?

sqoop导入到hdfs和hive有什么不同?
EN

Stack Overflow用户
提问于 2016-10-02 03:07:49
回答 2查看 954关注 0票数 0

我使用sqoop命令将mysql表“title”导入到hdfs中,如下所示:

代码语言:javascript
复制
sqoop import --connect jdbc:mysql://localhost/employees --username=root -P --table=titles --target-dir=titles --m=1

现在,如果我使用以下命令,我想导入到hive:

代码语言:javascript
复制
sqoop import --connect jdbc:mysql://localhost/employees --username=root -P --table titles --hive-import

我会被告知:

输出目录hdfs://localhost:9000/user/root/title已经存在

在蜂巢中,如果我做了一个展示表,就会得到以下内容:

代码语言:javascript
复制
hive> show tables;
OK
dept_emp
emp
myfirsthivetable
parted1emp
partitionedemp

你可以看到,在蜂巢中没有一个名为标题的表。

我对此感到困惑,对于sqoop导入的数据,hdfs和hive之间是否有1到1的关系?提示的意思是什么?

谢谢你的启发。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-10-02 10:21:00

正如Amit所指出的,由于您已经在第一个命令中创建了HDFS目录,Sqoop拒绝覆盖文件夹titles,因为它已经包含数据。

在第二个命令中,您告诉Sqoop将整个表(在第一个命令中已经导入)导入Hive。由于您没有用HDFS目的地指定--target-dir,所以Sqoop将尝试在/user/root/下创建文件夹titles。SInce此文件夹已存在,引发错误。

当您告诉Hive显示表时,titles不会出现,因为第二个命令(使用hive-import)没有成功,而且Hive对数据一无所知。当您添加标志--hive-import时,Sqoop在外壳下所做的是更新Hive亚稳态,它是一个具有Hive表、分区和HDFS位置的元数据的数据库。

您可以只使用一个Sqoop命令进行数据导入,而不是使用两个不同的命令。如果删除titles HDFS文件夹并执行如下操作:

代码语言:javascript
复制
sqoop import --connect jdbc:mysql://localhost/employees --username=root 
-P --table=titles --target-dir /user/root/titles --hive-import --m=1

这样,您就可以从Mysql中提取数据,创建/user/root/titles HDFS目录并更新转移目录,以便Hive知道表(和数据)在哪里。

但是,如果您不想用您已经导入的数据删除文件夹呢?在这种情况下,您可以使用以下内容来创建一个新的Hive表titles并指定数据的位置:

代码语言:javascript
复制
CREATE [TEMPORARY] [EXTERNAL] TABLE title    
  [(col_name data_type [COMMENT col_comment], ...)]
  (...)
  LOCATION '/user/root/titles'

这样,您就不需要重新导入整个数据,因为它已经在HDFS中了。

票数 2
EN

Stack Overflow用户

发布于 2016-10-02 03:23:07

当您在hive上创建一个表时,它最终会在HDFS上创建一个目录,因为您已经运行了hadoop导入,因此已经在HDFS上创建了一个名为“title”的目录。

您可以从HDFS中删除/user/root/titles目录并再次运行hive命令,或者在导入时使用--hive-table选项。

您可以参考sqoop 文档

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39813480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档