数据探索Java SDK示例

您可以通过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());
        }

    }
}