5分鐘教你搞定DLI SDK

      網友投稿 866 2025-04-04

      1??????DLI SDK是什么

      數據湖探索軟件開發工具包(Data Lake Insight Software Development Kit,簡稱DLI SDK)是對DLI提供的REST API進行的封裝,以簡化用戶的開發工作。用戶直接調用DLI SDK提供的接口函數即可實現使用DLI業務能力的目的。

      1.1??????如何下載DLI SDK

      用戶需注冊登錄后進入控制臺,點擊右上角的常用鏈接,下拉框中選擇DLI Client進行下載,下載完成后為一個jar包。

      1.2??????環境準備

      1.2.1????????要準備的開發環境如下:

      1.2.2????????操作步驟

      從Oracle官網下載并安裝JDK1.8版本,配置好JAVA環境變量。

      安裝JDK。

      配置環境變量,在“控制面板”選擇“系統”屬性,單擊“環境變量”。

      選擇“系統變量”,新建?“JAVA_HOME?變量”,路徑配置為JDK安裝路徑,例如:“D:\Java\jdk1.8.0_45”。

      編輯?“Path?變量”,在“變量值”中增加“%JAVA_HOME%\bin;”。

      新建?“CLASSPATH?變量”,在“變量值”中填寫?? ? ? “.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”。

      檢驗是否配置成功,運行cmd?,輸入?java -version。運行結果,請參見圖1,顯示版本信息,則說明安裝和配置成功。

      圖1?檢驗配置是否成功

      2.從Eclipse官網下載并安裝Eclipse IDE for Java Developers最新版本。在Eclipse中配置好JDK。

      創建新工程,選擇JRE版本,請參見圖2

      圖2?創建新工程

      配置并導入SDKjar包。

      在工程“JRE System Library”上單擊右鍵,選擇“Build Path”>“Configure Build Path”,請參見圖3。

      圖3?配置工程路徑

      b. 單擊“Add External JARs”,選擇SDK下載的jar包,單擊OK。

      圖4?選擇SDK jar包

      1.3??????使用SDK

      1.???????使用DLI SDK工具訪問DLI,需要用戶初始化DLI客戶端。用戶可以使用AK/SK(Access Key ID/Secret Access Key)或Token兩種認證方式初始化客戶端,示例代碼如下:

      *AK/SK認證方式樣例代碼

      String ak = "ak";

      String sk = "sk";

      String regionName = "regionname";

      String projectId = "project_id";

      DLIInfo DLIInfo = new DLIInfo(regionName, ak, sk, projectId);

      DLIClient client = new DLIClient(AuthenticationMode.AKSK, DLIInfo);

      說明:

      c.在地區和終端節點,獲取DLI對應的regionname.

      *?Token認證方式樣例代碼

      String?domainName?=?"domainname";

      String?userName?=?"username";

      String?password?=?"password";

      String?regionName?=?"regionname";

      String?projectId?=?"project_id";

      DLIInfo?DLIInfo?=?new?DLIInfo(regionName,?domainName,?userName,?password,?projectId);

      DLIClient?client?=?new?DLIClient(AuthenticationMode.TOKEN,?DLIInfo);

      2.???????初始化完成后,我們可以創建隊列和數據庫/表

      a.創建和刪除隊列:

      DLI提供創建隊列的接口,您可以使用該接口創建隊列。示例代碼如下:

      private?static?void?createQueue(DLIClient?client)?throws?DLIException?{

      //通過調用DLIClient對象的createQueue方法創建隊列

      String?qName?=?"queueName";

      int?cu?=?4;

      ChargingMode?mode?=?ChargingMode.CHARGING_MODE_SQL;

      String?description?=?"test?for?sdk";

      Queue?queue?=?client.createQueue(qName,?cu,?mode,?description);

      System.out.println("----------?createQueue?success?---------");

      }

      DLI提供刪除隊列的接口,您可以使用該接口刪除隊列。示例代碼如下:

      private?static?void?deleteQueue(DLIClient?client)?throws?DLIException?{

      //調用DLIClient對象的getQueue(queueName)方法獲取queueName這個隊列

      Queue?queue?=?client.getQueue(queueName);

      //使用deleteQueue()方法刪除queueName隊列

      queue.deleteQueue();

      }

      b.創建數據庫

      您可以使用DLI提供的接口創建數據庫,示例代碼如下:

      private static Database createDatabase(DLIClient client) throws DLIException {

      //通過調用DLIClient對象的createDatabase方法創建數據庫

      Database database = client.createDatabase(dbName);

      System.out.println("create database:" + database);

      return database;

      }

      c.創建和查詢DLI表和OBS表

      您可以使用DLI提供的接口創建數據存儲在DLI內部的表。示例代碼如下:

      private?static?Table?createDLITable(Database?database)?throws?DLIException?{

      //構造表列集合,通過實例化Column對象構建列

      List?columns?=?new?ArrayList();

      Column?c1?=?new?Column("c1",?DataType.STRING,?"desc?for?c1");

      Column?c2?=?new?Column("c2",?DataType.INT,?"desc?for?c2");

      Column?c3?=?new?Column("c3",?DataType.DOUBLE,?"desc?for?c3");

      Column?c4?=?new?Column("c4",?DataType.BIGINT,?"desc?for?c4");

      Column?c5?=?new?Column("c5",?DataType.SHORT,?"desc?for?c5");

      Column?c6?=?new?Column("c6",?DataType.LONG,?"desc?for?c6");

      Column?c7?=?new?Column("c7",?DataType.SMALLINT,?"desc?for?c7");

      Column?c8?=?new?Column("c8",?DataType.BOOLEAN,?"desc?for?c8");

      Column?c9?=?new?Column("c9",?DataType.DATE,?"desc?for?c9");

      Column?c10?=?new?Column("c10",?DataType.TIMESTAMP,?"desc?for?c10");

      Column?c11?=?new?Column("c11",?DataType.DECIMAL,?"desc?for?c11");

      columns.add(c1);

      columns.add(c2);

      columns.add(c3);

      columns.add(c4);

      columns.add(c5);

      columns.add(c6);

      columns.add(c7);

      columns.add(c8);

      columns.add(c9);

      columns.add(c10);

      columns.add(c11);

      List?sortColumns?=?new?ArrayList();

      sortColumns.add("c1");

      //通過調用Database對象的createDLITable方法創建DLI表

      Table?table?=?database.createDLITable(DLITblName,?"desc?for?table",?columns,?sortColumns);

      System.out.println(table);

      return?table;

      }

      您可以使用DLI提供的接口創建數據存儲在OBS的表。示例代碼如下:

      private?static?Table?createObsTable(Database?database)?throws?DLIException?{

      //構造表列集合,通過實例化Column對象構建列

      List?columns?=?new?ArrayList();

      Column?c1?=?new?Column("c1",?DataType.STRING,?"desc?for?c1");

      Column?c2?=?new?Column("c2",?DataType.INT,?"desc?for?c2");

      Column?c3?=?new?Column("c3",?DataType.DOUBLE,?"desc?for?c3");

      Column?c4?=?new?Column("c4",?DataType.BIGINT,?"desc?for?c4");

      Column?c5?=?new?Column("c5",?DataType.SHORT,?"desc?for?c5");

      Column?c6?=?new?Column("c6",?DataType.LONG,?"desc?for?c6");

      Column?c7?=?new?Column("c7",?DataType.SMALLINT,?"desc?for?c7");

      Column?c8?=?new?Column("c8",?DataType.BOOLEAN,?"desc?for?c8");

      Column?c9?=?new?Column("c9",?DataType.DATE,?"desc?for?c9");

      Column?c10?=?new?Column("c10",?DataType.TIMESTAMP,?"desc?for?c10");

      Column?c11?=?new?Column("c11",?DataType.DECIMAL,?"desc?for?c11");

      columns.add(c1);

      columns.add(c2);

      columns.add(c3);

      columns.add(c4);

      columns.add(c5);

      columns.add(c6);

      columns.add(c7);

      columns.add(c8);

      columns.add(c9);

      columns.add(c10);

      columns.add(c11);

      CsvFormatInfo?formatInfo?=?new?CsvFormatInfo();

      formatInfo.setWithColumnHeader(true);

      formatInfo.setDelimiter(",");

      formatInfo.setQuoteChar("\"");

      formatInfo.setEscapeChar("\");

      formatInfo.setDateFormat("yyyy/MM/dd");

      formatInfo.setTimestampFormat("yyyy-MM-dd?HH:mm:ss");

      //通過調用Database對象的createObsTable方法創建OBS表

      Table?table?=?database.createObsTable(obsTblName,?"desc?for?table",columns,?StorageType.DLI_CSV,?dataPath,?formatInfo);

      System.out.println(table);

      return?table;

      }

      您可以使用DLI提供的接口查詢數據庫下的所有表。示例代碼如下:

      private?static?void?listTables(Database?database)?throws?DLIException?{

      //調用Database對象的listAllTables方法查詢數據庫下的所有表

      List

      ?tables?=?database.listAllTables(true);

      for?(Table?table?:?tables)?{

      System.out.println(table);

      }

      }

      3.???????執行SQL語句和作業查詢

      a.執行SQL語句(提交SQL查詢作業)

      您可以使用DLI提供的接口執行查詢并獲取查詢結果。示例代碼如下:

      //實例化SQLJob對象,傳入執行SQL所需的queue,數據庫名,SQL語句

      private?static?void?runSqlJob(Queue?queue,?Table?obsTable)?throws?DLIException?{

      String?sql?=?"select?*?from?"?+?obsTable.getTableName();

      String?queryResultPath?=?“s3a://dli/sdk/resultData”;

      5分鐘教你搞定DLI SDK

      SQLJob?sqlJob?=?new?SQLJob(queue,?obsTable.getDb().getDatabaseName(),sql);

      System.out.println("start?submit?SQL?job...");

      //調用SQLJob對象的submit接口提交查詢作業

      sqlJob.submit();

      //調用SQLJob對象的getStatus接口查詢作業狀態

      JobStatus?status?=?sqlJob.getStatus();

      System.out.println(status);

      System.out.println("start?export?Result...");

      //調用SQLJob對象的exportResult接口導出查詢結果,其中queryResultPath為導出數據的路徑

      sqlJob.exportResult(queryResultPath,?StorageType.CSV,

      CompressType.GZIP,ExportMode.ERRORIFEXISTS,?null);

      System.out.println("Job?id:?"?+??sqlJob.getJobId()?+?",?Status?:?"?+?status.getName());

      }

      b .?通過條件過濾獲取作業信息

      您可以使用DLI提供的接口查詢當前工程下的所有作業信息。示例代碼如下:

      //返回JobResultInfo?List集合

      List?jobResultInfos?=?client.listAllJobs();

      //遍歷List集合查看Job信息

      for?(JobResultInfo?jobResultInfo?:?jobResultInfos)?{

      //job?id

      System.out.println(jobResultInfo.getJobId());

      //job?描述信息

      System.out.println(jobResultInfo.getDetail());

      //job?狀態

      System.out.println(jobResultInfo.getJobStatus());

      //job?類型

      System.out.println(jobResultInfo.getJobType());

      }

      //通過JobType過濾

      List?jobResultInfos?=?client.listAllJobs(JobType.DDL);

      //通過起始時間和JobType過濾,起始時間的格式為unix時間戳

      List?jobResultInfos?=?client.listAllJobs(1502349803729L,1502349821460L,JobType.DDL);

      //通過分頁過濾

      List?jobResultInfos?=?client.listAllJobs(100,1,JobType.DDL);

      //分頁,起始時間,Job類型

      List?jobResultInfos?=?client.listAllJobs(100,1,1502349803729L,1502349821460L,JobType.DDL);

      4.更詳細的SDK使用請參考https://support.huaweicloud.com/devg-uquery/uquery_04_0007.html

      Data Lake Insight 官網地址:https://www.huaweicloud.com/product/dli.html

      Data Lake Insight 體驗地址:http://49.4.0.83:8080/#/main/queryEditor

      Data Lake Insight 文檔中心:https://support.huaweicloud.com/usermanual-uquery/zh-cn_topic_0068141086.html

      Data Lake Insight 論壇地址:https://forum.huaweicloud.com/forum-599-1.html

      Java 數據湖探索 DLI API/SDK

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:怎樣讓一頁和令一頁之間的速度慢點
      下一篇:FPGA 時序約束系列之周期約束
      相關文章
      国产成人A亚洲精V品无码| 国产成人亚洲精品无码AV大片| 亚洲AV成人一区二区三区观看 | 国产亚洲视频在线| 亚洲国产一区二区三区在线观看 | 一本色道久久综合亚洲精品| 亚洲av无码成人精品区| 午夜亚洲国产成人不卡在线| 亚洲人成图片小说网站| 国产专区一va亚洲v天堂| 国产福利电影一区二区三区,亚洲国模精品一区 | 亚洲AV成人无码网天堂| 国产精品亚洲av色欲三区| 精品国产日韩亚洲一区91| 亚洲AV无码一区二区三区国产| 亚洲阿v天堂在线2017免费| 亚洲黄片手机免费观看| 91麻豆精品国产自产在线观看亚洲| 亚洲伊人成无码综合网| 日韩精品亚洲aⅴ在线影院| 亚洲人成77777在线播放网站| 国产亚洲综合网曝门系列| 久久精品国产精品亚洲色婷婷| 亚洲av午夜福利精品一区人妖| 亚洲av网址在线观看| 亚洲精品美女在线观看| 亚洲卡一卡2卡三卡4麻豆| 亚洲a∨无码男人的天堂| 亚洲最大中文字幕无码网站| 亚洲欧美日韩中文字幕一区二区三区| 亚洲欧洲AV无码专区| 亚洲成a人无码av波多野按摩| 亚洲人午夜射精精品日韩| 亚洲综合色区在线观看| 国产亚洲精品精华液| 久久夜色精品国产噜噜噜亚洲AV| 91亚洲国产成人久久精品网址| 亚洲日韩精品无码AV海量| 色天使色婷婷在线影院亚洲| 亚洲欧洲中文日韩av乱码| 国产av无码专区亚洲av桃花庵 |
    1. <ul id="eww2y"><pre id="eww2y"></pre></ul>
        • <samp id="eww2y"></samp>