sqoop job命令自动生成

批量生成

#!/usr/bin/env python
import MySQLdb
import datetime
import time
import os

#file path
FILEPATH='/tmp'

#source database
HOST='11.143.68.29'
PORT=3306
USER=admin'
PASSWD='admin'
DB='db_1'

#sqoop
FIELDS_TERMINATED_BY='\\t'     #如果需要临时表合并hive小文件,需使用默认分隔符
CHECK_COLUMN='__#alibaba_rds_row_id#__'

conn=MySQLdb.connect(host=HOST,port=PORT,user=USER,passwd=PASSWD,db =DB,)
cur=conn.cursor()
ret=cur.execute("select table_name from information_schema.tables where TABLE_SCHEMA='%s'"%(DB))
ret=cur.fetchall()

creFile=open(FILEPATH+'/sjob_cre.sh','w')
delFile=open(FILEPATH+'/sjob_del.sh','w')
execFile=open(FILEPATH+'/sjob_exec.sh','w')


for line in ret:
    tableName=line[0
    try:
        sjob="sudo -u hdfs sqoop job --create %s_%s -- import --connect  jdbc:mysql://%s:%s/%s  --table %s \
         --username %s --password %s -m 1  --hive-import  --fields-terminated-by '%s' --hive-database %s \
         --incremental append --check-column %s --last-value 0;"%(DB,tableName,HOST,PORT,DB,tableName,USER,PASSWD,FIELDS_TERMINATED_BY,DB,CHECK_COLUMN)
        creFile.write(sjob+'\n')
        delFile.write("sudo -u hdfs sqoop job --delete %s_%s"%(DB,tableName)+'\n')
        execFile.write("sudo -u hdfs sqoop job --exec %s_%s"%(DB,tableName)+'\n')
    except:
        print "*************************************************"
        print "Error,%s failed!"%(tableName)
        print "*************************************************"
cur.close()
conn.close()

生成一个表的job:


#!/bin/bash
set -e
#set -x

#file path
EXECFILE_PATH='/data/sqoop/sjob_exec.sh'

#source database
HOST='192.168.2.229'
PORT=3306
USER='root'
PASSWD='root'
DB='db_1'op

FIELDS_TERMINATED_BY='\t'
CHECK_COLUMN='__#alibaba_rds_row_id#__'
WORKER_NUM=1
tableName=$1

sjob="sudo -u hdfs sqoop job --create ${DB}_${tableName} -- import --connect  jdbc:mysql://${HOST}:${PORT}/${DB}  --table ${tableName} \
    --username ${USER} --password ${PASSWD} -m ${WORKER_NUM}  --hive-import  --fields-terminated-by '${FIELDS_TERMINATED_BY}' --hive-database ${DB} \
    --incremental append --check-column ${CHECK_COLUMN} --last-value 0;"

echo $sjob

echo "Add to sqoop?(y or n):"
read ret

if [ $ret == 'y' ];
then
        $($sjob)
        sjob="sqoop job --exec ${DB}_${tableName}"
        sed -i '/impala/i\'"$sjob"'' $EXECFILE_PATH
        echo "Add Completed!"
fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: sqoop job任务脚本可以通过以下几个命令来完成不同的操作: - 创建job: 使用命令`sqoop job --create`,后面接上job的名称和参数来创建一个job任务。 - 显示可用的job: 使用命令`sqoop job --list`,可以列出所有可用的job任务。 - 显示job的详细信息: 使用命令`sqoop job --show`,后面接上job的名称来显示该job任务的详细信息。 - 执行job: 使用命令`sqoop job --exec`,后面接上job的名称来执行该job任务。 - 删除job: 使用命令`sqoop job --delete`,后面接上job的名称来删除该job任务。 如果你想要用crontab自动调用sqoop,而不需要手动输入密码,可以参考Sqoop Job 应用(二)的解决方案。具体详情请参考链接: https://blog.csdn.net/weixin_42003671/article/details/90019323。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Sqoop Job 应用(一)](https://blog.csdn.net/u011250186/article/details/117672525)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [sqoop job 定时实现增量、全量导入Hive](https://blog.csdn.net/weixin_51872128/article/details/121148261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值