您可以通过SDK提交DLF数据探索任务。
前提条件
已安装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());
}
}
}
文档内容是否对您有帮助?