194 lines
6.7 KiB
JSON
194 lines
6.7 KiB
JSON
{
|
|
"apiVersion": "camel.apache.org/v1",
|
|
"kind": "Kamelet",
|
|
"metadata": {
|
|
"name": "databricks-source",
|
|
"annotations": {
|
|
"camel.apache.org/kamelet.support.level": "Preview",
|
|
"camel.apache.org/catalog.version": "4.22.1",
|
|
"camel.apache.org/kamelet.icon": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MCA0MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIj4KICA8cGF0aCBmaWxsPSIjRkYzNjIxIiBkPSJNMjAgMEw0MCA4LjI3VjEzLjFMMjAgMjAuNUwwIDEzLjFWOC4yN0wyMCAwWiIvPgogIDxwYXRoIGZpbGw9IiNGRjM2MjEiIGQ9Ik0wIDEzLjFMMjAgMjAuNVYyNi45TDAgMTkuNVYxMy4xWiIvPgogIDxwYXRoIGZpbGw9IiNGRjM2MjEiIGQ9Ik00MCAxMy4xTDIwIDIwLjVWMjYuOUw0MCAxOS41VjEzLjFaIi8+CiAgPHBhdGggZmlsbD0iI0ZGMzYyMSIgZD0iTTAgMTkuNUwyMCAyNi45VjMzLjNMMCAyNS45VjE5LjVaIi8+CiAgPHBhdGggZmlsbD0iI0ZGMzYyMSIgZD0iTTQwIDE5LjVMMjAgMjYuOVYzMy4zTDQwIDI1LjlWMTkuNVoiLz4KICA8cGF0aCBmaWxsPSIjRkYzNjIxIiBkPSJNMCAyNS45TDIwIDMzLjNWNDBMMCAzMi42VjI1LjlaIi8+CiAgPHBhdGggZmlsbD0iI0ZGMzYyMSIgZD0iTTQwIDI1LjlMMjAgMzMuM1Y0MEw0MCAzMi42VjI1LjlaIi8+Cjwvc3ZnPgo=",
|
|
"camel.apache.org/provider": "Apache Software Foundation",
|
|
"camel.apache.org/kamelet.group": "SQL",
|
|
"camel.apache.org/kamelet.namespace": "Database"
|
|
},
|
|
"labels": {
|
|
"camel.apache.org/kamelet.type": "source"
|
|
}
|
|
},
|
|
"spec": {
|
|
"definition": {
|
|
"title": "Databricks Source",
|
|
"description": "Query data from a Databricks Database. For Unity Catalog workspaces, specify catalog and schema parameters.",
|
|
"required": [
|
|
"serverHostname",
|
|
"httpPath",
|
|
"accessToken",
|
|
"query"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"serverHostname": {
|
|
"title": "Server Hostname",
|
|
"description": "The Databricks server hostname.",
|
|
"type": "string",
|
|
"example": "adb-1234567890123456.7.azuredatabricks.net"
|
|
},
|
|
"serverPort": {
|
|
"title": "Server Port",
|
|
"description": "The server port for the Databricks data source.",
|
|
"type": "string",
|
|
"default": 443
|
|
},
|
|
"httpPath": {
|
|
"title": "HTTP Path",
|
|
"description": "The HTTP path to the Databricks SQL Warehouse or cluster.",
|
|
"type": "string",
|
|
"example": "/sql/1.0/warehouses/abc123def456"
|
|
},
|
|
"accessToken": {
|
|
"title": "Access Token",
|
|
"description": "The personal access token to access Databricks.",
|
|
"type": "string",
|
|
"format": "password",
|
|
"x-descriptors": [
|
|
"urn:camel:group:credentials"
|
|
]
|
|
},
|
|
"query": {
|
|
"title": "Query",
|
|
"description": "The query to execute against the Databricks Database.",
|
|
"type": "string",
|
|
"example": "SELECT * FROM accounts"
|
|
},
|
|
"extraOptions": {
|
|
"title": "Extra Options",
|
|
"description": "Additional JDBC connection options (e.g., ConnCatalog=main;ConnSchema=default).",
|
|
"type": "string",
|
|
"default": ""
|
|
},
|
|
"consumedQuery": {
|
|
"title": "Consumed Query",
|
|
"description": "A query to run on a tuple consumed.",
|
|
"type": "string",
|
|
"example": "DELETE FROM accounts where user_id = :#user_id"
|
|
},
|
|
"delay": {
|
|
"title": "Delay",
|
|
"description": "The number of milliseconds before the next poll from the Databricks database.",
|
|
"type": "integer",
|
|
"default": 500
|
|
}
|
|
}
|
|
},
|
|
"types": {
|
|
"out": {
|
|
"mediaType": "application/json"
|
|
}
|
|
},
|
|
"dependencies": [
|
|
"camel:jackson",
|
|
"camel:kamelet",
|
|
"camel:sql",
|
|
"mvn:com.databricks:databricks-jdbc:3.4.2",
|
|
"mvn:org.apache.commons:commons-dbcp2:2.14.0"
|
|
],
|
|
"template": {
|
|
"beans": [
|
|
{
|
|
"name": "local-sql-databricks-source",
|
|
"type": "#class:org.apache.camel.component.sql.SqlComponent",
|
|
"properties": {
|
|
"autowiredEnabled": "false"
|
|
}
|
|
},
|
|
{
|
|
"name": "dsBean",
|
|
"type": "#class:org.apache.commons.dbcp2.BasicDataSource",
|
|
"properties": {
|
|
"password": "{{accessToken}}",
|
|
"url": "jdbc:databricks://{{serverHostname}}:{{serverPort}};httpPath={{httpPath}};AuthMech=3;transportMode=http;ssl=1;UID=token;PWD={{accessToken}}{{extraOptions}}",
|
|
"driverClassName": "com.databricks.client.jdbc.Driver"
|
|
}
|
|
}
|
|
],
|
|
"from": {
|
|
"uri": "{{local-sql-databricks-source}}:{{query}}",
|
|
"parameters": {
|
|
"dataSource": "#bean:{{dsBean}}",
|
|
"onConsume": "{{?consumedQuery}}",
|
|
"delay": "{{delay}}"
|
|
},
|
|
"steps": [
|
|
{
|
|
"marshal": {
|
|
"json": {
|
|
"library": "Jackson"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"to": "kamelet:sink"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"propertiesSchema": {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"type": "object",
|
|
"title": "Databricks Source",
|
|
"description": "Query data from a Databricks Database. For Unity Catalog workspaces, specify catalog and schema parameters.",
|
|
"required": [
|
|
"serverHostname",
|
|
"httpPath",
|
|
"accessToken",
|
|
"query"
|
|
],
|
|
"properties": {
|
|
"serverHostname": {
|
|
"type": "string",
|
|
"title": "Server Hostname",
|
|
"description": "The Databricks server hostname."
|
|
},
|
|
"serverPort": {
|
|
"type": "string",
|
|
"title": "Server Port",
|
|
"description": "The server port for the Databricks data source.",
|
|
"default": 443
|
|
},
|
|
"httpPath": {
|
|
"type": "string",
|
|
"title": "HTTP Path",
|
|
"description": "The HTTP path to the Databricks SQL Warehouse or cluster."
|
|
},
|
|
"accessToken": {
|
|
"type": "string",
|
|
"title": "Access Token",
|
|
"description": "The personal access token to access Databricks.",
|
|
"format": "password"
|
|
},
|
|
"query": {
|
|
"type": "string",
|
|
"title": "Query",
|
|
"description": "The query to execute against the Databricks Database."
|
|
},
|
|
"extraOptions": {
|
|
"type": "string",
|
|
"title": "Extra Options",
|
|
"description": "Additional JDBC connection options (e.g., ConnCatalog=main;ConnSchema=default).",
|
|
"default": ""
|
|
},
|
|
"consumedQuery": {
|
|
"type": "string",
|
|
"title": "Consumed Query",
|
|
"description": "A query to run on a tuple consumed."
|
|
},
|
|
"delay": {
|
|
"type": "integer",
|
|
"title": "Delay",
|
|
"description": "The number of milliseconds before the next poll from the Databricks database.",
|
|
"default": 500
|
|
}
|
|
}
|
|
}
|
|
} |