diff --git a/catalog-rest-service/src/main/resources/json/schema/entity/services/databaseService.json b/catalog-rest-service/src/main/resources/json/schema/entity/services/databaseService.json index 561e67371e2..1e322ac6aee 100644 --- a/catalog-rest-service/src/main/resources/json/schema/entity/services/databaseService.json +++ b/catalog-rest-service/src/main/resources/json/schema/entity/services/databaseService.json @@ -22,7 +22,8 @@ "Trino", "Vertica", "Glue", - "MariaDB" + "MariaDB", + "Druid" ], "javaEnums": [ { @@ -66,6 +67,9 @@ }, { "name": "MariaDB" + }, + { + "name": "Druid" } ] } diff --git a/ingestion/setup.py b/ingestion/setup.py index e24a27146f2..d4d2e1f98ac 100644 --- a/ingestion/setup.py +++ b/ingestion/setup.py @@ -79,6 +79,7 @@ plugins: Dict[str, Set[str]] = { "bigquery-usage": {"google-cloud-logging", "cachetools"}, "docker": {"docker==5.0.3"}, "dbt": {}, + "druid": {"pydruid>=0.6.2"}, "elasticsearch": {"elasticsearch~=7.13.1"}, "glue": {"boto3~=1.19.12"}, "hive": { diff --git a/ingestion/src/metadata/ingestion/source/druid.py b/ingestion/src/metadata/ingestion/source/druid.py new file mode 100644 index 00000000000..45abba4066d --- /dev/null +++ b/ingestion/src/metadata/ingestion/source/druid.py @@ -0,0 +1,27 @@ +from typing import Optional + +import pydruid + +from metadata.ingestion.ometa.openmetadata_rest import MetadataServerConfig +from metadata.ingestion.source.sql_source import SQLConnectionConfig, SQLSource + + +class DruidConfig(SQLConnectionConfig): + scheme = "druid" + auth_options: Optional[str] = None + service_type = "Druid" + + def get_connection_url(self): + url = super().get_connection_url() + return f"{url}/druid/v2/sql" + + +class DruidSource(SQLSource): + def __init__(self, config, metadata_config, ctx): + super().__init__(config, metadata_config, ctx) + + @classmethod + def create(cls, config_dict, metadata_config_dict, ctx): + config = DruidConfig.parse_obj(config_dict) + metadata_config = MetadataServerConfig.parse_obj(metadata_config_dict) + return cls(config, metadata_config, ctx)