我尝试在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的名称。
我收到
的错误- 类名 命令也。
这两个命令是什么以及要传递给这些命令的预期参数是什么?
答案 0 :(得分:2)
当您最初使用sqoop
将数据导入hdfs时,sqoop
必须为每个导入的表创建java文件(通常在您运行的sqoop import
命令的同一目录中{{1表或者如果使用departments
而不是类应该在该位置)。你需要在jar文件中打包这些类,并在--outdir
:
所以如果你在merge
文件中打包department.java
类,那么mydataTypes.jar
命令应该是:
sqoop merge
要解析数据集并提取键列,则自动生成 必须使用先前导入的类。你应该指定 包含
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
工具重新创建课程。