Connect to a Custom Metastore

POST /api/v1.2/custom_metastores

Use this API to connect to the custom metastore through QDS. Currently, QDS supports connecting to only MySQL meta stores. For information on how to connect to a metastore through the QDS UI, see Connecting to a Custom Hive Metastore.

Note

This feature is not enabled by default. To enable it, create a ticket with Qubole Support.

Required Role

The following users can make this API call:

  • Users who belong to the system-user or system-admin group.
  • Users who belong to a group associated with a role that allows submitting a command. See Managing Groups and Managing Roles for more information.

Parameters

Note

Parameters marked in bold below are mandatory. Others are optional and have default values.

Parameter Description
db_name This is the metastore name to be connected to the QDS.
db_host It is the IP address or hostname of the metastore.
db_user It is the user name to login to the metastore.
db_passwd Password to login to the metastore.
db_port It is the TCP Port to connect on to. If it is not specified, then the default port 3306 is used.
qubole_managed It is set to false by default as you cannot use Qubole_managed Hive metastore and a custom metastore at the same time.
enable_cluster_access Set it to true if the cluster has direct access to the custom metastore.
use_bastion_node Set this parameter to true when the metastore that you want to connect to is within a VPC and is accessed through the Bastion node. It is set to false by default.
bastion_node_public_dns It is the Public DNS address of the bastion node through which you can connect to the metastore. It becomes mandatory when use_bastion_node is set to true.
bastion_node_user It is the user ID that is used to log into the Bastion node through QDS. It becomes mandatory when use_bastion_node is set to true.
bastion_node_private_key It is the private key of the Bastion node. It becomes mandatory when use_bastion_node is set to true.

Request API Syntax

Here is the API syntax for the REST API call to connect to a metastore that is not within a VPC.

curl -X POST -H "X-AUTH-TOKEN:<AUTH-TOKEN>" -H "Content-Type: application/json" -H "Accept: application/json" \
-d '{"db_name" : "<Metastore Name>", "db_host": "<n.n.n.n/hostname>", "db_port":"<Port>", "db_user":"user_name", "db_passwd":"<Password>"}' \
"https://gcp.qubole.com/api/v1.2/custom_metastores/"

Here is the API syntax where you want to connect to a metastore that is in a VPC through the Bastion Node.

curl -X POST -H "X-AUTH-TOKEN:<AUTH-TOKEN>" -H "Content-Type: application/json" -H "Accept: application/json" \
-d '{"db_name" : "<Metastore Name>", "db_host": "<n.n.n.n/hostname>", "db_port":"<Port>", "db_user":"user_name", "db_passwd":"<Password>",
    "use_bastion_node":"true", "bastion_node_public_dns" : "<bastion node Public DNS>", "bastion_node_user" : "<bastion node user name>",
    "bastion_node_private_key" : "<Bastion Node Private Key>"}' \ "https://gcp.qubole.com/api/v1.2/custom_metastores/"

Sample Requests

Here is a sample API call to connect to a custom metastore that is not in a VPC.

curl -X POST -H "X-AUTH-TOKEN:<AUTH-TOKEN>" -H "Content-Type: application/json" -H "Accept: application/json" \
-d '{"db_name" : "HiveMetaStoreA", "db_host": "10.10.10.1", "db_user":"EC2-User", "db_passwd":"Met@1_P@ss"}' \
"https://gcp.qubole.com/api/v1.2/custom_metastores/"

Here is a sample request API to connect to a metastore that is within a VPC.

curl -X POST -H "X-AUTH-TOKEN:<AUTH-TOKEN>" -H "Content-Type: application/json" -H "Accept: application/json" \
-d '{"db_name" : "HiveMetaStoreA", "db_host": "10.10.10.1", "db_user":"EC2-User", "db_passwd":"Met@1_P@ss",
    "use_bastion_node":"true", "bastion_node_public_dns" : "10.10.10.8", "bastion_node_user" : "BastionAdmin",
    "bastion_node_private_key" : "<Bastion Node Private Key>"}' \
    "https://gcp.qubole.com/api/v1.2/custom_metastores/"