0
4

3 回答 3

1

sqoop job --exec JOB1对命令提示符下的工作方式感到困惑。执行作业的正确语法(从命令提示符)是

sqoop job --exec JOB1 --meta-connect jdbc:hsqldb:hsql://ip-address:16000/sqoop

也许您从运行您的 sqoop 元存储的同一台机器上执行了该作业

请确保您已完成以下操作

  1. 在 ip=ip-address 的机器上启动 sqoop Metastore
  2. 在 sqoop-site.xml 中进行了必要的配置更改(点击链接)

至于 oozie 工作流,试试下面的 workflow.xml

<workflow-app xmlns=”uri:oozie:workflow:0.4″ name=”oozie-wf”&gt;
    <start to=”sqoop-wf”/>
    <action name=”sqoop-wf”&gt;
        <sqoop xmlns=”uri:oozie:sqoop-action:0.2″&gt;
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>fs.hdfs.impl.disable.cache</name>
                    <value>true</value>
                </property>
            </configuration>
            <arg>job</arg>
            <arg>--exec</arg>
            <arg>JOB1</arg>
            <arg>--meta-connect jdbc:hsqldb:hsql://ip-address:16000/sqoop</arg>
        </sqoop>
        <ok to=”end”/>
        <error to=”fail”/>
    </action>
    <kill name=”fail”&gt;
        <message>Failed, Error Message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name=”end”/>
</workflow-app>
于 2015-09-23T06:21:30.780 回答
1

请确保您在 sqoop-site.xml 中指定了您的元存储,并且您在您的 oozie 工作流文件夹中传递了站点 xml。您可以使用 xml 标签传递它。

于 2015-09-03T06:07:36.060 回答
0

在我们的集群中,通过 Hue UI 创建作业而不指定元存储(使用--meta-connect参数)导致作业有时仅由sqoop job --list命令返回。在命令提示符下,在同一台机器上创建和列出工作;但是,机器 B 找不到在机器 A 上创建的工作。

如果您也无法访问作业可以访问在不同节点上创建的作业,那么您的 sqoop 元存储似乎没有运行。要解决它:

  1. 使用命令在其中一个节点上启动元存储sqoop-metastore
  2. 检查元存储是否正在运行:$ ps aux | grep sqoop应该将结果之一作为 Sqoop 元存储返回,
  3. 指定文件中的元存储路径sqoop-site.xml。在我们的例子中,我们无法使 ot 工作,所以我们使用下一步进行,
  4. 如有必要,在 shell 和 Hue UI 中,将每个 sqoop 作业命令(创建、列出、显示、执行、删除)中的元存储路径指定为
    $ sqoop job --exec my_job --meta-connect jdbc:hsqldb:hsql://node-running-metastore:16000/sqoop.

注意:要启动 Metastore,请考虑使用&andnohup在后台运行 Metastore 进程并将日志捕获到文件中:

$ nohup sqoop-metastore &>> /tmp/nohup-sqoop-metastore.out &
于 2019-04-15T20:01:59.467 回答