什么是Sqoop merge命令中的--jar-file和--class-name选项

时间:2016-08-06 23:04:53

标签: merge sqoop cloudera-cdh

我尝试在cloudera quickstart VM中运行以下sqoop merge命令:

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

我收到以下错误:

  

缺少选项的参数:jar-file

在sqoop文档中,我发现了这一点。

  

- jar-file指定要从中加载记录类的jar的名称。

我收到

的错误
  

- 类名   命令也。

这两个命令是什么以及要传递给这些命令的预期参数是什么?

1 个答案:

答案 0 :(得分:2)

当您最初使用sqoop将数据导入hdfs时,sqoop必须为每个导入的表创建java文件(通常在您运行的sqoop import命令的同一目录中{{1表或者如果使用departments而不是类应该在该位置)。你需要在jar文件中打包这些类,并在--outdir

中使用它

所以如果你在merge文件中打包department.java类,那么mydataTypes.jar命令应该是:

sqoop merge

sqoop_guide

  

要解析数据集并提取键列,则自动生成   必须使用先前导入的类。你应该指定   包含sqoop merge --merge-key department_id \ --new-data /user/cloudera/sqoop_merge/departments_delta \ --onto /user/cloudera/sqoop_merge/departments \ --target-dir /user/cloudera/sqoop_merge/departments_stage \ --class-name departments \ --jar-file /path/to/mydataTypes.jar --class-name的类名和jar文件。如果这   您无法使用--jar-file工具重新创建课程。