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