Dev*_*ash 4 hadoop mapreduce sqoop
我们如何在SQoop中自动化增量导入?
在增量导入中,我们需要--last-value
从最后一个值开始导入,但我的工作是经常从RDBMS导入,我不想手动给出最后一个值,有什么方法可以自动化这个过程吗?
@Durga Viswanath Gadiraju的另一种方法回答.
如果要将数据导入配置单元表,则可以从配置单元表中查询上次更新的值,并将该值传递给sqoop导入查询.您可以使用shell脚本或oozie操作来实现此目的.
Shell脚本:
lastupdatedvalue=`hive -e 'select last_value from table` #tweak the selection query based on the logic.
sqoop import --connect jdbc:mysql://localhost:3306/ydb --table yloc --username root -P --incremental append --last-value ${lastupdatedvalue}
Run Code Online (Sandbox Code Playgroud)
Oozie方法:
PFB sudo工作流程:
<workflow-app name="sqoop-to-hive" xmlns="uri:oozie:workflow:0.4">
<start to="hiveact"/>
<action name="hiveact">
<hive xmlns="uri:oozie:hive-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<script>script.sql</script>
<capture-output/>
</hive>
<ok to="sqoopact"/>
<error to="kill"/>
<action name="sqoopact">
<sqoop xmlns="uri:oozie:sqoop-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<command>import --connect jdbc:mysql://localhost:3306/ydb --table yloc --username root -P --incremental append --last-value ${wf:actionData('hiveact')}</command>
</sqoop>
<ok to="end"/>
<error to="kill"/>
</action>
<kill name="kill">
<message>Action failed</message>
</kill>
<end name="end"/>
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
归档时间: |
|
查看次数: |
7612 次 |
最近记录: |