全部產品
Search
文件中心

Data Lake Formation:資料探索Java SDK樣本

更新時間:Jul 13, 2024

您可以通過SDK提交DLF資料探索任務。

前提條件

  • 建立AccessKey

  • 已安裝Java環境。

    DataLake SDK for Java要求使用JDK 1.7或更高版本。

安裝DataLake SDK

您可以在Maven Repository中擷取資料湖構建最新的SDK包,擷取地址Maven SDK地址

 <dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>datalake20200710</artifactId>
  <version>2.0.12</version>
</dependency>

參考樣本

您可以通過資料探索相關的API:SubmitQuery、GetQueryResult、CancelQuery來執行和管理SQL查詢任務。API詳情參考資料探索API

import com.aliyun.datalake20200710.Client;
import com.aliyun.datalake20200710.models.GetQueryResultRequest;
import com.aliyun.datalake20200710.models.GetQueryResultResponse;
import com.aliyun.datalake20200710.models.SubmitQueryRequest;
import com.aliyun.datalake20200710.models.SubmitQueryResponse;
import com.aliyun.teaopenapi.models.Config;

public class QueryExample {

    public static void main(String[] args) throws Exception {
        Config authConfig = new Config();
        // 阿里雲帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM使用者進行API訪問或日常營運,請登入RAM控制台建立RAM使用者
        // 強烈建議不要將AccessKey ID和AccessKey Secret儲存到代碼裡,會存在密鑰泄漏風險。
      	// 此處以將AccessKey ID和AccessKey Secret儲存在環境變數為例說明。運行範例程式碼前,需先配置環境變數。
        authConfig.accessKeyId= System.getenv("AK_ENV");
        authConfig.accessKeySecret= System.getenv("SK_ENV");
        authConfig.endpoint= "dlf.cn-hangzhou.aliyuncs.com";
        authConfig.regionId= "cn-hangzhou";
        Client authClient = new Client(authConfig);

        // 提交查詢
        SubmitQueryRequest queryRequest = new SubmitQueryRequest();
        queryRequest.setSql("show databases;");
        SubmitQueryResponse queryResponse = authClient.submitQuery(queryRequest);

        String queryId = queryResponse.getBody().getData();


        // 取消查詢樣本
//        CancelQueryRequest cancelRequest  = new CancelQueryRequest();
//        cancelRequest.setQueryId(queryId);
//        CancelQueryResponse cancelResult = authClient.cancelQuery(cancelRequest);
//        System.out.println(cancelResult.getBody().getSuccess());

        // 擷取查詢結果
        GetQueryResultRequest queryResultRequest = new GetQueryResultRequest();
        queryResultRequest.setQueryId(queryId);
        queryResultRequest.setPageNumber(1);
        queryResultRequest.setPageSize(100);
        GetQueryResultResponse result = authClient.getQueryResult(queryResultRequest);

        while(!result.getBody().getJobCompleted()){
            // fetch query result until it is ready
            Thread.sleep(1000);
            result = authClient.getQueryResult(queryResultRequest);
        }

        if ("AVAILABLE".equals(result.getBody().getStatus())) {
            System.out.println(result.getBody().getSchema());
            System.out.println(result.getBody().getRows());
        } else {
            System.out.println(result.getBody().getErrorMessage());
        }

    }
}