2016-12-30 116 views
0

我正在准备CCA175考试。我试图导入mysql数据库retail_dbhive但得到这个错误。我尝试了几次,并从这些文件夹中删除了目录/文件;CCA175的Sqoop/Hive:获取表AlreadyExistsException

/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 

记录初始化的/ usr /瓶/蜂房共1.1.0-cdh5.7.0.jar!/hive-log4j.properties FAILED:执行错误,从 org.apache.hadoop.hive.ql.exec.DDLTask返回代码1。 AlreadyExistsException(消息:表类已经存在)

任何帮助,将不胜感激。

+0

在命令末尾添加'--verbose',并告诉我在此错误发生之前生成的hive create table命令。理想情况下,它应该删除Hive表,因为使用覆盖 –

回答

0

看起来您已经在配置单元的默认数据库中有类别表。你需要从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的家,检查是否你已经 具有对应于这些表目录。因为作为 Sqoop导入到Hive的一部分,因此在移至配置单位仓库位置之前,数据会临时复制到/ user/cloudera /下的HDFS上。对于 示例,请检查类别目录。

    [[email protected] /]$ hadoop fs -ls /user/cloudera/categories 
    
+0

从配置单元中的默认数据库中删除表,或者在配置单元中创建新数据库并在sqoop作业中使用'--hive-database '来导入特定hive数据库中的表! –

0

从sqoop命令删除--create-蜂房表

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

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