Data Source Connections
Details of all the connection configuration supported can be found in the below subsections for each type of connection.
These configurations can be done via API or from configuration. Examples of both are shown for each data source below.
Supported Data Connections
Data Source Type | Data Source | Support |
---|---|---|
Cloud Storage | AWS S3 | |
Cloud Storage | Azure Blob Storage | |
Cloud Storage | GCP Cloud Storage | |
Database | BigQuery | |
Database | Cassandra | |
Database | MySQL | |
Database | Postgres | |
Database | Elasticsearch | |
Database | MongoDB | |
Database | Opensearch | |
File | CSV | |
File | Delta Lake | |
File | Iceberg | |
File | JSON | |
File | ORC | |
File | Parquet | |
File | Hudi | |
HTTP | REST API | |
Messaging | Kafka | |
Messaging | RabbitMQ | |
Messaging | Solace | |
Messaging | ActiveMQ | |
Messaging | Pulsar | |
Metadata | Data Contract CLI | |
Metadata | Great Expectations | |
Metadata | Marquez | |
Metadata | OpenMetadata | |
Metadata | OpenAPI/Swagger | |
Metadata | Open Data Contract Standard (ODCS) | |
Metadata | Amundsen | |
Metadata | Datahub | |
Metadata | Solace Event Portal |
API
All connection details require a name. Depending on the data source, you can define additional options which may be used by the driver or connector for connecting to the data source.
Configuration file
All connection details follow the same pattern.
Overriding configuration
When defining a configuration value that can be defined by a system property or environment variable at runtime, you can define that via the following:
The above defines that if there is a system property or environment variable named POSTGRES_URL
, then that value will
be used for the url
, otherwise, it will default to localhost
.
Data sources
To find examples of a task for each type of data source, please check out this page.
File
Linked here is a list of generic options that can be included as part of your file data source configuration if required. Links to specific file type configurations can be found below.
CSV
Other available configuration for CSV can be found here
JSON
Other available configuration for JSON can be found here
ORC
Other available configuration for ORC can be found here
Parquet
Other available configuration for Parquet can be found here
Delta
Iceberg
RMDBS
Follows the same configuration used by Spark as
found here.
Sample can be found below
Ensure that the user has write permission, so it is able to save the table to the target tables.
Postgres
Can see example API or Config definition for Postgres connection above.
Permissions
Following permissions are required when generating plan and tasks:
SQL Permission Statements
GRANT SELECT ON information_schema.tables TO < user >;
GRANT SELECT ON information_schema.columns TO < user >;
GRANT SELECT ON information_schema.key_column_usage TO < user >;
GRANT SELECT ON information_schema.table_constraints TO < user >;
GRANT SELECT ON information_schema.constraint_column_usage TO < user >;
MySQL
Permissions
Following permissions are required when generating plan and tasks:
SQL Permission Statements
BigQuery
Follows same configuration as defined by the Spark BigQuery Connector as found here.
Cassandra
Follows same configuration as defined by the Spark Cassandra Connector as found here
In docker/data/custom/application.conf
:
org.apache.spark.sql.cassandra {
customer_cassandra {
spark.cassandra.connection.host = "localhost"
spark.cassandra.connection.host = ${?CASSANDRA_HOST}
spark.cassandra.connection.port = "9042"
spark.cassandra.connection.port = ${?CASSANDRA_PORT}
spark.cassandra.auth.username = "cassandra"
spark.cassandra.auth.username = ${?CASSANDRA_USERNAME}
spark.cassandra.auth.password = "cassandra"
spark.cassandra.auth.password = ${?CASSANDRA_PASSWORD}
}
}
Permissions
Ensure that the user has write permission, so it is able to save the table to the target tables.
Following permissions are required when enabling configuration.enableGeneratePlanAndTasks(true)
as it will gather
metadata information about tables and fields from the below tables.
CQL Permission Statements
Kafka
Define your Kafka bootstrap server to connect and send generated data to corresponding topics. Topic gets set at a step
level.
Further details can be
found here
When defining your schema for pushing data to Kafka, it follows a specific top level schema.
An example can be
found here
. You can define the key, value, headers, partition or topic by following the linked schema.
JMS
Uses JNDI lookup to send messages to JMS queue. Ensure that the messaging system you are using has your queue/topic registered via JNDI otherwise a connection cannot be created.
Rabbitmq
In docker/data/custom/application.conf
:
jms {
customer_rabbitmq {
connectionFactory = "com.rabbitmq.jms.admin.RMQConnectionFactory"
connectionFactory = ${?RABBITMQ_CONNECTION_FACTORY}
url = "amqp://localhost:5672"
url = ${?RABBITMQ_URL}
user = "guest"
user = ${?RABBITMQ_USER}
password = "guest"
password = ${?RABBITMQ_PASSWORD}
virtualHost = "/"
virtualHost = ${?RABBITMQ_VIRTUAL_HOST}
}
}
Solace
In docker/data/custom/application.conf
:
jms {
customer_solace {
initialContextFactory = "com.solacesystems.jndi.SolJNDIInitialContextFactory"
connectionFactory = "/jms/cf/default"
url = "smf://localhost:55555"
url = ${?SOLACE_URL}
user = "admin"
user = ${?SOLACE_USER}
password = "admin"
password = ${?SOLACE_PASSWORD}
vpnName = "default"
vpnName = ${?SOLACE_VPN}
}
}
HTTP
Define any username and/or password needed for the HTTP requests.
The url is defined in the tasks to allow for generated data to be populated in the url.