欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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庫的模式?

解決辦法

碰到問題首先要看文檔才對的。文檔這里已經指出如何指定pg庫的schema了。官方文檔地址
文檔已經說了,如果向指定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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • VS2019中Git源代碼管理實現(xiàn)總結

    VS2019中Git源代碼管理實現(xiàn)總結

    這篇文章主要介紹了VS2019中Git源代碼管理實現(xiàn)總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 算法系列15天速成 第六天 五大經典查找【下】

    算法系列15天速成 第六天 五大經典查找【下】

    大家是否感覺到,樹在數(shù)據(jù)結構中大行其道,什么領域都要沾一沾,碰一碰
    2013-11-11
  • Git操作規(guī)范之tag的使用技巧詳解

    Git操作規(guī)范之tag的使用技巧詳解

    這篇文章主要為大家介紹了Git操作規(guī)范之tag的使用技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • 永久解決VSCode終端中文亂碼問題

    永久解決VSCode終端中文亂碼問題

    這篇文章主要介紹了永久解決VSCode終端中文亂碼問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 如何使用Git實現(xiàn)切換分支開發(fā)過程解析

    如何使用Git實現(xiàn)切換分支開發(fā)過程解析

    這篇文章主要介紹了如何使用Git實現(xiàn)切換分支開發(fā)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • VS Code使用Git可視化管理源代碼詳細教程(推薦)

    VS Code使用Git可視化管理源代碼詳細教程(推薦)

    這篇文章主要介紹了VS Code使用Git可視化管理源代碼詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Sublime Text3快捷鍵匯總

    Sublime Text3快捷鍵匯總

    這篇文章主要介紹了Sublime Text3快捷鍵匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 調試JavaScript/VBScript腳本程序(IE篇)

    調試JavaScript/VBScript腳本程序(IE篇)

    JavaScript/VB Script腳本程序一般有兩種執(zhí)行方式,一種是嵌入在宿主程序里面執(zhí)行,比如在IE瀏覽器里面執(zhí)行;另外一種,在資源管理器里面雙擊執(zhí)行(雖然還是通過另外一個程序解釋執(zhí)行,但是給人的感覺畢竟是直接運行)。
    2009-09-09
  • 基于prompt?tuning?v2訓練好一個垂直領域的chatglm-6b

    基于prompt?tuning?v2訓練好一個垂直領域的chatglm-6b

    這篇文章主要為大家介紹了基于prompt?tuning?v2訓練好一個垂直領域的chatglm-6b的過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 頁面中加載優(yōu)酷視頻去掉廣告的方法

    頁面中加載優(yōu)酷視頻去掉廣告的方法

    本文主要介紹了頁面中加載優(yōu)酷視頻去掉廣告的方法,具有很好的參考價值,需要的朋友一起來看下吧
    2016-12-12

最新評論