将参数传递给sqoop作业

chh*_*rma 6 hadoop hive sqoop

我正在为Oozie安排一个sqoop工作,以便将每日数据加载到Hive中.

我想基于Date作为参数对hive进行增量加载,该参数将传递给sqoop作业

研究完之后,我无法找到将参数传递给Sqoop作业的方法

Jer*_*ard 5

您可以通过将日期分为两个阶段来完成此操作:

  1. 协调员到工作流程

在您的协调器中,您可以将日期传递给它执行的工作流<property>,如下所示:

<coordinator-app name="schedule" frequency="${coord:days(1)}"
                 start="2015-01-01T00:00Z" end="2025-01-01T00:00Z"
                 timezone="Etc/UTC" xmlns="uri:oozie:coordinator:0.2">
    ...
    <action>
        <workflow>
            <app-path>${nameNode}/your/workflow.xml</app-path>
            <configuration>
                <property>
                    <name>workflow_date</name>
                    <value>${coord:formatTime(coord:nominalTime(), 'yyyyMMdd')}</value>
                </property>
            </configuration>
        </workflow>
    </action>
    ...
</coordinator-app>
Run Code Online (Sandbox Code Playgroud)
  1. Sqoop的工作流程

在您的工作流程中,您可以使用${workflow_date}变量在Sqoop调用中引用该属性,如下所示:

<sqoop xmlns="uri:oozie:sqoop-action:0.2">
    ...
    <command>import --connect jdbc:connect:string:here --table tablename --target-dir /your/import/dir/${workflow_date}/ -m 1</command>
    ...
</sqoop>
Run Code Online (Sandbox Code Playgroud)