最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java如何批量執(zhí)行datax腳本

 更新時(shí)間:2024年02月28日 17:01:30   作者:可樂還是甜的好  
這篇文章主要介紹了Java如何批量執(zhí)行datax腳本問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、前言

最近在使用datax同步數(shù)據(jù)表,由于好多個(gè)表,一開始每次都需要等一個(gè)執(zhí)行完再執(zhí)行下一個(gè),這樣明顯效率很低,于是寫了個(gè)Java方法來批量操作;

環(huán)境: linux服務(wù)器

二、Java代碼

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Author: Huang JX
 * @Date: 2021/11/11
 * @Description: datax 批量執(zhí)行腳本,日志存放在當(dāng)前目錄的 DataxSyncLogs 中;
 * 注意:需要輸入 datax 腳本的文件夾路徑作為 main 函數(shù)的參數(shù),如 home/xxx/datax/job/
 * <p>
 * 使用說明:
 * 1、去掉文件的包名package;
 * 2、將此Java文件放到 /datax/bin/目錄下;
 * 3、javac DataxSyncUtil.java 
 * 4、java DataxSyncUtil [參數(shù)]datax腳本文件夾路徑
 */
public class DataxSyncUtil {
    public static void main(String[] args) throws Exception {
        FileOutputStream out = null;
        StringBuffer sb = new StringBuffer();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        try {
            String jobPath = args[0];
            if (jobPath == null && "".equals(jobPath.trim())) {
                throw new Exception("請(qǐng)輸入datax腳本文件夾路徑");
            }
            String logDir = jobPath + "DataxSyncLogs";
            File logDirFile = new File(logDir);
            if (!logDirFile.exists()) {
                logDirFile.mkdir(); // 創(chuàng)建日志文件夾
            }
            String logFileName = logDir + "/datax_sync_" + sdf.format(new Date()) + ".log";
            File file = new File(logFileName);
            if (!file.exists())
                file.createNewFile();
            out = new FileOutputStream(file, true);
            sb.append("==========================================\n");
            sb.append("==========Datax Sync Job Start!==========\n");
            sb.append("==========================================\n");
            File f = new File(jobPath);
            if (!f.exists()) {
                sb.append(jobPath + " not exists\n");
                return;
            }
            System.out.print(sb.toString());
            out.write(sb.toString().getBytes("utf-8"));
            String cmdStr;
            File fa[] = f.listFiles();
            for (int i = 0; i < fa.length; i++) {
                sb = new StringBuffer();
                File fs = fa[i];
                if (!fs.isDirectory()) {
                    Process pr = null;
                    cmdStr = "python3 datax.py " + jobPath + fs.getName();
                    sb.append("start cmd: " + cmdStr + "\n");
                    System.out.print("start cmd: " + cmdStr + "\n");
                    pr = Runtime.getRuntime().exec(cmdStr);
                    BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
                    String line;
                    while (true) {
                        if (!((line = in.readLine()) != null)) break;
                        sb.append(line + "\n");
                        System.out.print(line + "\n");
                    }
                    in.close();
                    pr.waitFor();
                    out.write(sb.toString().getBytes("utf-8"));
                }
            }
            sb.append("==========================================\n");
            sb.append("===========Datax Sync Job End!===========\n");
            sb.append("==========================================\n");
            System.out.print(sb.toString());
            out.write(sb.toString().getBytes("utf-8"));
        } finally {
            out.flush();
            out.close();
        }
    }
}

注意:

看一下注釋的說明,將job的文件路徑做為main函數(shù)的參數(shù);

【更新記錄】

1、2021-12-06 更新寫日志方式,每跑完一個(gè)任務(wù)就寫日志到文件中;

三、使用說明

1.把DataxSyncUtil拷到服務(wù)器中datax的bin目錄下,如/home/xxx/datax/bin/,注意去除Java類的包名;

2.編譯Java程序,javac DataxSyncUtil.java

3.執(zhí)行Java程序,傳入?yún)?shù)為放置datax腳本的文件夾,如java DataxSyncUtil /home/xxx/datax/job/

4.如果想在后臺(tái)運(yùn)行,則為nohup java DataxSyncUtil /home/xxx/datax/job/ &

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis?SQL映射文件的作用和結(jié)構(gòu)詳解

    MyBatis?SQL映射文件的作用和結(jié)構(gòu)詳解

    MyBatisSQL映射文件定義了SQL語句和參數(shù)映射規(guī)則,用于將Java代碼與數(shù)據(jù)庫操作解耦,實(shí)現(xiàn)SQL語句的靈活配置和動(dòng)態(tài)生成
    2025-03-03
  • SpringCloud之監(jiān)控?cái)?shù)據(jù)聚合Turbine的實(shí)現(xiàn)

    SpringCloud之監(jiān)控?cái)?shù)據(jù)聚合Turbine的實(shí)現(xiàn)

    這篇文章主要介紹了SpringCloud之監(jiān)控?cái)?shù)據(jù)聚合Turbine的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 使用spring框架ResponseEntity實(shí)現(xiàn)文件下載

    使用spring框架ResponseEntity實(shí)現(xiàn)文件下載

    這篇文章主要介紹了使用spring框架ResponseEntity實(shí)現(xiàn)文件下載,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 詳解利用Spring的AbstractRoutingDataSource解決多數(shù)據(jù)源的問題

    詳解利用Spring的AbstractRoutingDataSource解決多數(shù)據(jù)源的問題

    本篇文章主要介紹了詳解利用Spring的AbstractRoutingDataSource解決多數(shù)據(jù)源的問題。具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-03-03
  • 深入Java?ThreadLocal核心原理與內(nèi)存泄漏解決方案

    深入Java?ThreadLocal核心原理與內(nèi)存泄漏解決方案

    這篇文章主要介紹了深入闡述了ThreadLocal的底層實(shí)現(xiàn)機(jī)制,即通過每個(gè)線程內(nèi)部維護(hù)的ThreadLocalMap的哈希表來存儲(chǔ)數(shù)據(jù),從而為每個(gè)線程提供獨(dú)立的變量副本,實(shí)現(xiàn)線程隔離,關(guān)鍵點(diǎn)在于其Entry的Key是弱引用,而Value是強(qiáng)引用,這直接引出了內(nèi)存泄漏問題,需要的朋友可以參考下
    2026-01-01
  • Java NIO寫大文件對(duì)比(win7和mac)

    Java NIO寫大文件對(duì)比(win7和mac)

    這篇文章主要介紹了Java NIO寫大文件對(duì)比(win7和mac),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • JavaWeb簡(jiǎn)單用戶登錄注冊(cè)實(shí)例代碼(有驗(yàn)證碼)

    JavaWeb簡(jiǎn)單用戶登錄注冊(cè)實(shí)例代碼(有驗(yàn)證碼)

    這篇文章主要介紹了JavaWeb簡(jiǎn)單用戶登錄注冊(cè)實(shí)例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • MyBatisX代碼自動(dòng)生成的實(shí)現(xiàn)示例

    MyBatisX代碼自動(dòng)生成的實(shí)現(xiàn)示例

    本文主要介紹了MyBatisX代碼自動(dòng)生成的實(shí)現(xiàn)示例, 文中通過圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • spring boot + jpa + kotlin入門實(shí)例詳解

    spring boot + jpa + kotlin入門實(shí)例詳解

    這篇文章主要介紹了spring boot + jpa + kotlin入門實(shí)例詳解 ,需要的朋友可以參考下
    2017-07-07
  • Java二維數(shù)組實(shí)現(xiàn)數(shù)字拼圖效果

    Java二維數(shù)組實(shí)現(xiàn)數(shù)字拼圖效果

    這篇文章主要為大家詳細(xì)介紹了Java二維數(shù)組實(shí)現(xiàn)數(shù)字拼圖效果,控制臺(tái)可以對(duì)空格進(jìn)行移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評(píng)論

赤城县| 磐石市| 满洲里市| 奉新县| 明光市| 巴林右旗| 阿荣旗| 肇州县| 肥西县| 普格县| 高青县| 肥西县| 麻阳| 永平县| 荆州市| 九江县| 伽师县| 科技| 陈巴尔虎旗| 襄汾县| 平顶山市| 阿图什市| 仲巴县| 河南省| 喀什市| 东莞市| 淳安县| 吴江市| 建昌县| 兴化市| 建瓯市| 高台县| 石台县| 滨海县| 江津市| 日照市| 堆龙德庆县| 永清县| 秦安县| 新丰县| 玉田县|