首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用SqoopOptions从Mysql导入数据到单元

尝试使用SqoopOptions从Mysql导入数据到单元
EN

Stack Overflow用户
提问于 2016-02-20 11:19:47
回答 1查看 402关注 0票数 0

我试图使用SqoopOptions将数据从Mysql导入到单元中,但得到了以下错误:

错误:导入失败:错误的FS: hdfs://localhost:8020/user/hive/warehouse/default/emp/_logs,tool.ImportTool: file:///

它正在将数据导入hdfs,而不是蜂箱中的数据。

这是我的完整代码。

代码语言:javascript
复制
import org.apache.sqoop.tool.ImportTool;
import com.cloudera.sqoop.SqoopOptions; 
public class App 
{
    public static void main( String[] args )
    {
        importToHive("emp");
    }
    /* CONSTANTS */
    private static final String JOB_NAME = "Sqoop Hive Job";
    private static final String MAPREDUCE_JOB = "Hive Map Reduce Job";
    private static final String DBURL ="jdbc:mysql://localhost:3306/sample";
    private static final String DRIVER = "com.mysql.jdbc.Driver";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "cloudera";      
    private static final String HADOOP_HOME ="/usr/lib/hadoop-0.20-mapreduce";
    private static final String JAR_OUTPUT_DIR = "/tmp/sqoop/compile";
    private static final String HIVE_HOME = "/usr/lib/hive";
    private static final String HIVE_DIR = "/user/hive/warehouse/";
    private static final String WAREHOUSE_DIR = "hdfs://localhost:8020/user/hive/warehouse/default";
    private static final String SUCCESS = "SUCCESS !!!";
    private static final String FAIL = "FAIL !!!";

/*  **
* Imports data from RDBMS MySQL and uploads into Hive environment
*/ 

    public static void importToHive(String table){

       System.out.println("SqoopOptions loading .....");        

        /* MySQL connection parameters */
        SqoopOptions options = new SqoopOptions();
        options.setConnectString(DBURL);
        options.doOverwriteHiveTable();
        options.setTableName(table);
        options.setDriverClassName(DRIVER);
        options.setUsername(USERNAME);
        options.setPassword(PASSWORD);
        options.setHadoopMapRedHome(HADOOP_HOME);

        /* Hive connection parameters */
        options.setHiveHome(HIVE_HOME);
        options.setHiveImport(true);
        options.setHiveTableName("bsefmcgh");
        options.setOverwriteHiveTable(true);
        options.setFailIfHiveTableExists(false);
        //options.setFieldsTerminatedBy(',');
        options.setOverwriteHiveTable(true);
    options.setDirectMode(true);
    options.setNumMappers(1); // No. of Mappers to be launched for the job
    options.setWarehouseDir(WAREHOUSE_DIR);
    options.setJobName(JOB_NAME);
    options.setMapreduceJobName(MAPREDUCE_JOB);
    options.setTableName(table);
    options.setJarOutputDir(JAR_OUTPUT_DIR);        

    System.out.println("Import Tool running ....");
    ImportTool it = new ImportTool();
    int retVal = it.run((com.cloudera.sqoop.SqoopOptions) options);
    }
}
EN

回答 1

Stack Overflow用户

发布于 2016-02-21 20:38:35

我相信您不需要在仓库-dir选项中指定名称节点地址。

试试这个:

代码语言:javascript
复制
private static final String WAREHOUSE_DIR = "/user/hive/warehouse/default";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35522486

复制
相关文章

相似问题

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