CCA175的Sqoop / Hive:获取表AlreadyExistsException

问题描述 投票:0回答:2

我正在准备我的CCA175考试。我试图导入mysql数据库retail_dbhive但收到此错误。我尝试了几次,也从这些文件夹中删除了目录/文件;

/user/hive/warehouse
/user/cloudera

仍然,在运行这个sqoop工作后,我得到以下错误:

sqoop import-all-tables \
--num-mappers 1 \   
--connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" \  
--username=retail_dba \   
--password=cloudera \   
--hive-import \   
--hive-overwrite \   
--create-hive-table \   
--compress \   
--compression-codec org.apache.hadoop.io.compress.SnappyCodec \   
--outdir java_files

使用jar中的配置初始化日志:file:/usr/jars/hive-common-1.1.0-cdh5.7.0.jar!/hive-log4j.properties FAILED:执行错误,从org.apache.hadoop.hive返回代码1 .ql.exec.DDLTask。 AlreadyExistsException(消息:表类别已存在)

任何帮助将受到高度赞赏。

hadoop hive cloudera sqoop
2个回答
0
投票

看来你已经在hive的默认数据库中有了类别表。您需要从Hive中删除表。以下是步骤:

  1. 登录到mysql并检查retail_db包含多少个表。 mysql> use retail_db; mysql> show tables;
  2. 登录配置单元并检查retail_dba(mysql)的哪些表存在?删除存在于配置单元中的表。在你的情况下,它的类别 hive> show tables; hive> drop table categories;
  3. 导航到cloudera home并检查您是否已经拥有与这些表对应的目录。因为作为Sqoop导入到Hive的一部分,在移动到hive仓库位置之前,数据会临时复制到/ user / cloudera /下的HDFS上。例如,检查类别目录。 [cloudera@quickstart /]$ hadoop fs -ls /user/cloudera/categories

0
投票

从sqoop命令中删除--create-hive-table。

根据sqoop文档,如果已存在具有相同名称的表,则作业将失败。

--create-hive-table如果设置,则在目标配置单元表退出时作业将失败。默认情况下,此属性为false

© www.soinside.com 2019 - 2024. All rights reserved.