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

sqoop如何指定pg庫的模式(方法詳解)

 更新時間:2022年01月22日 11:47:58   作者:華為云開發(fā)者社區(qū)  
sqoop是一個用來將hadoop中hdfs和關系型數(shù)據(jù)庫中的數(shù)據(jù)相互遷移的工具,可以將一個關系型數(shù)據(jù)庫(mysql、oracle等)中的數(shù)據(jù)導入到hadoop的hdfs中,也可以將hdfs的數(shù)據(jù)導入到關系型數(shù)據(jù)庫中,本文給大家介紹sqoop如何指定pg庫的模式,一起看看吧

sqoop是一款用于hadoop和關系型數(shù)據(jù)庫之間數(shù)據(jù)導入導出的工具。你可以通過sqoop把數(shù)據(jù)從數(shù)據(jù)庫(比如mysql,oracle)導入到hdfs中;也可以把數(shù)據(jù)從hdfs中導出到關系型數(shù)據(jù)庫中。sqoop通過Hadoop的MapReduce導入導出,因此提供了很高的并行性能以及良好的容錯性。

sqoop適合以下的人群使用:

  • 系統(tǒng)和應用開發(fā)者
  • 系統(tǒng)管理員
  • 數(shù)據(jù)庫管理員
  • 數(shù)據(jù)分析師
  • 數(shù)據(jù)工程師

說明

使用sqoop導出導入數(shù)據(jù)非常的方便,但是對于postgresql(簡稱PG庫)時就碰到了一個問題,pg庫是三層結構的database——schema——table。如果想導入到某一個模式下,那就需要指定模式才可以。但是sqoop如何指定pg庫的模式?

解決辦法

碰到問題首先要看文檔才對的。文檔這里已經(jīng)指出如何指定pg庫的schema了。官方文檔地址
文檔已經(jīng)說了,如果向指定schema需要添加-- --schema <name> 但是要注意的是必須在命令行的!?。?!最后?。?!添加才會生效。

但是,這是命令行的解決辦法,如果我們使用的是java呢?在沒解決之前,我的java代碼是這樣寫的:

public static boolean ExportCmdInPg(Configuration conf, String tableName, List<String> columns, String hdfsDir,Map<String, String> dbMap) {
        try {
            LogUtils.logInfoPrint("開始任務",logger);
            List<String> list = new ArrayList<>();
            list.add("--connect");
            list.add(dbMap.get(Constant.DRIVERURL));
            list.add("--username");
            list.add(dbMap.get(Constant.USER));
            list.add("--password");
            list.add(dbMap.get(Constant.PASSWORD));
            list.add("--table");
            list.add(tableName);
            list.add("--columns");
            list.add(StringUtils.join(columns, ','));
            list.add("--fields-terminated-by");
            list.add("\t");
            list.add("--export-dir");
            list.add(hdfsDir);
            list.add("-m");
            list.add("1");
            ExportTool exporter = new ExportTool();
            Sqoop sqoop = new Sqoop(exporter);
            String[] data = list.toArray(new String[0]);
            if (0 == data.length) {
                LogUtils.logErrorPrint("sqoop參數(shù)為空,請檢查ExportCmd方法!",logger);
                return false;
            }
            if (0 == Sqoop.runSqoop(sqoop, data)){
                return true;
            }
        }catch (Exception e){
            LogUtils.logErrorPrint("ExportCmd 導入到HDFS出現(xiàn)錯誤",logger,e);
        }
        return false;
    }

結果當然是不成功。那我哦添加-- --schema 參數(shù)試一下

public static boolean ExportCmdInPg(Configuration conf, String tableName, List<String> columns, String hdfsDir,Map<String, String> dbMap) {
        try {
            LogUtils.logInfoPrint("開始任務",logger);
            List<String> list = new ArrayList<>();
            list.add("--connect");
            list.add(dbMap.get(Constant.DRIVERURL));
            list.add("--username");
            list.add(dbMap.get(Constant.USER));
            list.add("--password");
            list.add(dbMap.get(Constant.PASSWORD));
            list.add("--table");
            list.add(tableName);
            list.add("--columns");
            list.add(StringUtils.join(columns, ','));
            list.add("--fields-terminated-by");
            list.add("\t");
            list.add("--export-dir");
            list.add(hdfsDir);
            list.add("-m");
            list.add("1");
            list.add("-- --schema");
            list.add("HERO");
            ExportTool exporter = new ExportTool();
            Sqoop sqoop = new Sqoop(exporter);
            String[] data = list.toArray(new String[0]);
            if (0 == data.length) {
                LogUtils.logErrorPrint("sqoop參數(shù)為空,請檢查ExportCmd方法!",logger);
                return false;
            }
            if (0 == Sqoop.runSqoop(sqoop, data)){
                return true;
            }
        }catch (Exception e){
            LogUtils.logErrorPrint("ExportCmd 導入到HDFS出現(xiàn)錯誤",logger,e);
        }
        return false;
    }

結果也是不成功,顯示報錯不識別-- --schema 。。。為了能夠使schema參數(shù)生效,廢了我不少勁。。。也查了不少資料,但是查到的資料都沒有關于java的schema的設置。所以。。。最終正確的解決辦法是:

public static boolean ExportCmdInPg(Configuration conf, String tableName, List<String> columns, String hdfsDir,Map<String, String> dbMap) {
        try {
            LogUtils.logInfoPrint("開始sqoop將oracle的數(shù)據(jù)導出到HDFS目錄",logger);
            List<String> list = new ArrayList<>();
            list.add("--connect");
            list.add(dbMap.get(Constant.DRIVERURL));
            list.add("--username");
            list.add(dbMap.get(Constant.USER));
            list.add("--password");
            list.add(dbMap.get(Constant.PASSWORD));
            list.add("--table");
            list.add(tableName);
            list.add("--columns");
            list.add(StringUtils.join(columns, ','));
            list.add("--fields-terminated-by");
            list.add("\t");
            list.add("--export-dir");
            list.add(hdfsDir);
            list.add("-m");
            list.add("1");
            // 注意這里是--是分開的,源碼這里是通過--做判斷的
            list.add("--");
            list.add("--schema");
            list.add("HERO");
            ExportTool exporter = new ExportTool();
            Sqoop sqoop = new Sqoop(exporter);
            String[] data = list.toArray(new String[0]);
            if (0 == data.length) {
                LogUtils.logErrorPrint("sqoop參數(shù)為空,請檢查ExportCmd方法!",logger);
                return false;
            }
            if (0 == Sqoop.runSqoop(sqoop, data)){
                return true;
            }
        }catch (Exception e){
            LogUtils.logErrorPrint("ExportCmd 導入到HDFS出現(xiàn)錯誤",logger,e);
        }
        return false;
    }

當然你也可能會使用字符串數(shù)組,數(shù)組方式就要這樣寫了

// 這里只是舉個示例
String[] string = new String[]{"--","--schema","HERO"}

so 問題解決,心情愉快。如果問題不解決,可能會憋一天。。。。

本文分享自華為云社區(qū)《【Hadoop】關于Sqoop導出數(shù)據(jù)到postgresql時schema的設置問題》,作者:Copy工程師 。

到此這篇關于sqoop如何指定pg庫的模式的文章就介紹到這了,更多相關sqoop指定pg庫的模式內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 如何正確使用開源項目?

    如何正確使用開源項目?

    開源項目廣受大家喜愛,其實我們在使用開源項目的過程中有不少注意的事項,今天就來給大家介紹下如何正確的使用開源項目。需要的朋友可以參考一下
    2018-09-09
  • VScode內接入deepseek包過程記錄

    VScode內接入deepseek包過程記錄

    在VSCode中集成本地部署的DeepSeek-R1模型,通過擴展商店下載并配置Continue插件,實現(xiàn)模型的添加、連接和使用,過程中包括配置文件的修改、模型的刪除以及注意事項的處理,本文介紹VScode內接入deepseek包過程,感興趣的朋友一起看看吧
    2025-02-02
  • 45個GIT經(jīng)典操作場景使用詳解

    45個GIT經(jīng)典操作場景使用詳解

    這篇文章主要介紹了45個GIT經(jīng)典操作場景使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Win10下為VSCode配置LaTex編輯器的方法

    Win10下為VSCode配置LaTex編輯器的方法

    這篇文章主要介紹了Win10下為VSCode配置LaTex編輯器的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Git里多種撤銷操作的最佳方法

    Git里多種撤銷操作的最佳方法

    這篇文章我們會給大家介紹關于Git里的多種撤銷操作,我會講解某些你需要“撤銷”已做出的修改的常見場景,以及利用 Git 進行這些操作的最佳方法。下面來一起看看吧。
    2016-09-09
  • 解決IDEA中git拉取代碼時出現(xiàn)Update canceled問題

    解決IDEA中git拉取代碼時出現(xiàn)Update canceled問題

    這篇文章主要介紹了解決IDEA中git拉取代碼時出現(xiàn)Update canceled問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • git工具常用命令及ssh操作方法

    git工具常用命令及ssh操作方法

    這篇文章主要介紹了git工具常用到的命令以及非常詳細的ssh操作方法,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家能夠多多進步,早日升職加薪
    2021-09-09
  • 如何讓vsCode顯示中文界面

    如何讓vsCode顯示中文界面

    vscode默認的語言是英文,這給使用者帶來了一定的挑戰(zhàn),現(xiàn)在小編就來告訴你如何將vscode設置成中文。
    2020-01-01
  • 使用SSH快速下載Git項目的實現(xiàn)方法

    使用SSH快速下載Git項目的實現(xiàn)方法

    下面小編就為大家分享一篇使用SSH快速下載Git項目的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Git如何實現(xiàn)撤銷提交(命令行+IDEA)

    Git如何實現(xiàn)撤銷提交(命令行+IDEA)

    這篇文章主要介紹了Git如何實現(xiàn)撤銷提交(命令行+IDEA)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論

盘山县| 斗六市| 禄丰县| 石林| 湘西| 通许县| 涞源县| 江门市| 博乐市| 都安| 什邡市| 贡觉县| 永嘉县| 杭锦后旗| 永年县| 石屏县| 东明县| 敦煌市| 洪雅县| 文山县| 昌江| 鹤壁市| 东乌珠穆沁旗| 长白| 二连浩特市| 曲沃县| 永新县| 公安县| 东台市| 鲁甸县| 吉隆县| 瓮安县| 玛曲县| 林口县| 开原市| 伽师县| 富源县| 辰溪县| 民勤县| 大城县| 宁乡县|