This is an automated email from the ASF dual-hosted git repository.
peacewong pushed a commit to branch dev-1.3.2
in repository https://gitbox.apache.org/repos/asf/linkis.git
The following commit(s) were added to refs/heads/dev-1.3.2 by this push:
new 80be574a9 [feat:4012] add partition examine api (#4072)
80be574a9 is described below
commit 80be574a90261e04f10a048472e529d5495c828c
Author: aiceflower <[email protected]>
AuthorDate: Thu Feb 16 15:04:23 2023 +0800
[feat:4012] add partition examine api (#4072)
[feat:4012] add partition examine api (#4072)
---
.../metadata/restful/api/DataSourceRestfulApi.java | 39 ++++++++++++++++++++++
.../linkis/metadata/service/DataSourceService.java | 2 ++
.../service/impl/DataSourceServiceImpl.java | 12 +++++++
3 files changed, 53 insertions(+)
diff --git
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/DataSourceRestfulApi.java
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/DataSourceRestfulApi.java
index 8d006c282..d1d0fec0f 100644
---
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/DataSourceRestfulApi.java
+++
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/restful/api/DataSourceRestfulApi.java
@@ -70,6 +70,45 @@ public class DataSourceRestfulApi implements
DataSourceRestfulRemote {
}
}
+ @ApiOperation(
+ value = "queryPartitionExists",
+ notes = "query partition exists",
+ response = Message.class)
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "database", dataType = "String", value =
"database"),
+ @ApiImplicitParam(name = "table", dataType = "String", value = "table"),
+ @ApiImplicitParam(name = "partition", dataType = "String", value = "table")
+ })
+ @RequestMapping(path = "partitionExists", method = RequestMethod.GET)
+ public Message partitionExists(
+ @RequestParam(value = "database") String database,
+ @RequestParam(value = "table") String table,
+ @RequestParam(value = "partition") String partition,
+ HttpServletRequest req) {
+ String userName = ModuleUserUtils.getOperationUser(req, "query partition
exists");
+ try {
+ if (StringUtils.isBlank(database)) {
+ return Message.error("'database' is missing[缺少数据库]");
+ }
+ if (StringUtils.isBlank(table)) {
+ return Message.error("'table' is missing[缺少表名]");
+ }
+ if (StringUtils.isBlank(partition)) {
+ return Message.error("'partition' is missing[缺少分区名]");
+ }
+ MetadataQueryParam queryParam =
+ MetadataQueryParam.of(userName)
+ .withDbName(database)
+ .withTableName(table)
+ .withPartitionName(partition);
+ boolean res = dataSourceService.partitionExists(queryParam);
+ return Message.ok("").data("partitionExists", res);
+ } catch (Exception e) {
+ logger.error("Failed to examine whether a partition exists(检查分区是否存在失败)",
e);
+ return Message.error("Failed to examine whether a partition exists
(检查分区是否存在失败)", e);
+ }
+ }
+
@ApiOperation(
value = "queryDbsWithTables",
notes = "query dbs with tables",
diff --git
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/DataSourceService.java
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/DataSourceService.java
index 0b20a3192..ed81573dc 100644
---
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/DataSourceService.java
+++
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/DataSourceService.java
@@ -38,4 +38,6 @@ public interface DataSourceService {
JsonNode getPartitionSize(MetadataQueryParam queryParam);
JsonNode getPartitions(MetadataQueryParam queryParam);
+
+ boolean partitionExists(MetadataQueryParam queryParam);
}
diff --git
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/impl/DataSourceServiceImpl.java
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/impl/DataSourceServiceImpl.java
index a26fe71d0..bab839b11 100644
---
a/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/impl/DataSourceServiceImpl.java
+++
b/linkis-public-enhancements/linkis-datasource/linkis-metadata/src/main/java/org/apache/linkis/metadata/service/impl/DataSourceServiceImpl.java
@@ -258,6 +258,18 @@ public class DataSourceServiceImpl implements
DataSourceService {
return partitionJson;
}
+ @DataSource(name = DSEnum.FIRST_DATA_SOURCE)
+ @Override
+ public boolean partitionExists(MetadataQueryParam queryParam) {
+ List<String> partitions = hiveMetaDao.getPartitions(queryParam);
+ boolean res = Boolean.FALSE;
+ if (CollectionUtils.isNotEmpty(partitions)
+ && partitions.contains(queryParam.getPartitionName())) {
+ res = Boolean.TRUE;
+ }
+ return res;
+ }
+
private FileStatus getFileStatus(String location) throws IOException {
try {
return getRootHdfs().getFileStatus(new Path(location));
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]