1. 程式人生 > >sqoop job命令自動生成

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

相關推薦

sqoop job命令自動生成

批量生成 #!/usr/bin/env python import MySQLdb import datetime import time import os #file path FILEPA

Tree 命令自動生成 目錄樹到txt

使用DOS的[TREE]命令,具體方法如下: [開始]→[所有程式]→[附件]→[DOS命令提示符]→進入DOS介面; [CD/+回車]→返回C:/根目錄; 在C:/下鍵入TREE□X:/目錄名□/F□>ABC.TXT [回車],此時就會在C:/盤的根目錄下生成一個名為

輕鬆學習Ionic (四) 修改應用圖示及新增啟動畫面(更新官方命令列工具自動生成

 <platform name="android">              <icon src="res/android/ldpi.png" density="ldpi" />              <icon src="res/android/mdpi.png" de

【Python】自動生成命令列工具

Python 中用於生成命令列介面(Command Line Interfaces, CLIs)的工具已經有一些了,例如已經成為 Python 標準庫的 argparse 和第三方的 click ,這些都是很不錯的工具。但是這些工具為 Python 程式生成 C

Thinkphp5命令自動生成

        ThinkPHP5.0支援 Console 應用,通過命令列的方式執行一些URL訪問不方便或者安全性較高的操作。         這裡只是其中幾條常用的指令,在此記下: php th

自動生成代理類

ase static sta public question desc cto cape proxy WebApiProxy-Generate-CSharp public static string AssemblyDirectory {

使用Mybatis-Generator自動生成Dao、Model、Mapping相關文件

select let 屬於 url img jdb uid enables 粘貼 Mybatis屬於半自動ORM,在使用這個框架中,工作量最大的就是書寫Mapping的映射文件,由於手動書寫很容易出錯,我們可以利用Mybatis-Generator來幫我們自動生成文件。

ROS知識(16)----如何編譯時自動鏈接同一個工作空間的其他包的頭文件(包含message,srv,action自動生成的頭文件)

logs package fin 空間 依賴庫 osc div build 知識 catkin_make編譯時,往往需要自動鏈接同一個工作空間的其他包的頭文件。否則會出現類似如下的錯誤: /home/xx/xx_ws/srcA_package/src/db.hpp:13:

條款6:不想使用編譯器自動生成的函數,就要明確拒絕!

但是 con public col 調用 operator 聲明 接受 錯誤 每一個對象都是獨一無二的,如果不想其被復制,我們就希望其復制以失敗收場。如一座房屋出售HomeForSale類: 1 HomeForSale h1; 2 HomeForSale h2; 3 Ho

使用MyBatis Generator自動生成MyBatis的代碼

ive for ctype enable runtime 包名 strings href tle 這兩天需要用到MyBatis的代碼自動生成的功能,由於MyBatis屬於一種半自動的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由於手寫映射文件很容易出錯,

綜合示例:自動生成一組新聞

lap func tel style display ima one closed alt 點擊按鈕,自動生成5條新聞信息 用一組數組把5條新聞保存起來, 再運用 if 判讀和 for 循環來達到自動生成的效果 1 <!DOCTYPE HTML> 2

Mybatis最入門---代碼自動生成(generatorConfig.xml配置)

pack ces war map serial file 用戶名 clip 英文 第一種方式:通過Main方法執行配置文件。 --------------------------------------------------------------------------

eclipse自動生成getset註釋

setters ron ren 目錄 pla 設置 附件 註釋 consola 1、文件替換 將附件裏的文檔替換到eclipse安裝目錄下的plugins,在替換之前最好是把那個文件做個備份放在外面。 2、重啟Eclipse設置註釋風格: Window->Prefer

AutoConf自動生成Makefile(基於helloworld簡單例子)

programs tom change col -a 二進制 自己 int 生成 新建一個簡單的helloworld工程文件夾,目錄結構如下 hello.h代碼: #include<stdio.h> void fprint() { printf("h

tp5模塊自動生成

更多 命令 gmail del _file__ con control test use 1build.php配置要生成的目錄 <?php// +-----------------------------------------------------------

自動生成氣泡對話框的函數CreateBubble.js

eat func 9.png 對話 com def ans https 引用     之前在寫一個界面,想要用到氣泡,然而一直找不到現成的有效地辦法,是在沒有辦法了我只好自己寫一個,於是就有了現在的CreateBubble.js。很簡單的一個函數,但是非常實用。     使

Eclipse自動生成 get/set

.com ras lun ahp v2v lips 3rd wkt air %E5%AD%97%E8%8A%82%E5%BA%8F%E8%BD%AC%E6%8D%A2%E4%B8%8E%E7%BB%93%E6%9E%84%E4%BD%93%E4%BD%8D%E5%9F%9F

使用MyBatis-Gererator自動生成Dao.Model.Mapping相關文件

less .cn dbcc nat acc git reat logs ping 一。在MyEclipse中使用Maven項目下使用MyBatis-Gererator自動生成Dao.Model.Mapping相關文件   1.關於Mybatis-Generator的下載可以

CSS雪碧圖自動生成軟件

自動生成 position enter 教程 下載地址 com 包含 nbsp round http://www.99css.com/1524/ 包含詳細的下載地址、下載步驟以及使用教程 亮點:自動合成雪碧圖+自動生成雪碧圖background-position代碼CS

express-generator 自動生成服務器基本文件

邏輯 初始化 list 規則 方法 htm aaa 中項 生成 (1) 安裝 express-generator 構建工具 npm install -g express-generator 在命令行中用 npm 在全局安裝 express-generator