org.apache.hive.beeline.hs2connection.HS2ConnectionFileParser Maven / Gradle / Ivy
The newest version!
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hive.beeline.hs2connection;
import java.util.Properties;
/**
* HS2ConnectionFileParser provides a interface to be used by Beeline to parse a configuration (file
* or otherwise) to return a Java Properties object which contain key value pairs to be used to construct
* connection URL automatically for the Beeline connection
*/
public interface HS2ConnectionFileParser {
/**
* prefix string used for the keys
*/
public static final String BEELINE_CONNECTION_PROPERTY_PREFIX = "beeline.hs2.connection.";
/**
* Property key used to provide the URL prefix for the connection URL
*/
public static final String URL_PREFIX_PROPERTY_KEY = "url_prefix";
/**
* Property key used to provide the default database in the connection URL
*/
public static final String DEFAULT_DB_PROPERTY_KEY = "defaultDB";
/**
* Property key used to provide the hosts in the connection URL
*/
public static final String HOST_PROPERTY_KEY = "hosts";
/**
* Property key used to provide the hive configuration key value pairs in the connection URL
*/
public static final String HIVE_CONF_PROPERTY_KEY = "hiveconf";
/**
* Property key used to provide the hive variables in the connection URL
*/
public static final String HIVE_VAR_PROPERTY_KEY = "hivevar";
/**
* Returns a Java properties object which contain the key value pairs which can be used in the
* Beeline connection URL
* The properties returned must include url_prefix and hosts
* Following are some examples of the URLs and returned properties object
*
* - jdbc:hive2://hs2-instance1.example.com:10000/default;user=hive;password=mypassword should
* return [ "url_prefix"="jdbc:hive2://", "hosts"="hs2-instance1.example.com:10000",
* "defaultDB"=default, "user"="hive", "password"="mypassword" ]
*
- jdbc:hive2://zk-instance1:10001,zk-instance2:10002,zk-instance3:10003/default;
* serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2 should return [
* "url_prefix"="jdbc:hive2://",
* "hosts"="zk-instance1:10001,zk-instance2:10002,zk-instance3:10003", "defaultDB"="default",
* "serviceDiscoveryMode"="zooKeeper", "zooKeeperNamespace"="hiveserver2" ]
*
*
- If hive_conf_list and hive_var_list is present in the url it should return a comma separated
* key=value pairs for each of them
* For example :
* jdbc:hive2://hs2-instance1.example.com:10000/default;user=hive?hive.cli.print.currentdb=true;
* hive.cli.print.header=true#hivevar:mytbl=customers;hivevar:mycol=id it should return [
* "url_prefix"="jdbc:hive2://", "hosts"="hs2-instance1.example.com:10000", "defaultDB"="default",
* "user"="hive", "hiveconf"="hive.cli.print.currentdb=true, hive.cli.print.header=true",
* "hivevar"="hivevar:mytb1=customers, hivevar:mycol=id" ]
*
*
* @return Properties object which contain connection URL properties for Beeline connection. Returns an empty properties
* object if the connection configuration is not found
* @throws BeelineHS2ConnectionFileParseException if there is invalid key with appropriate message
*/
Properties getConnectionProperties() throws BeelineHS2ConnectionFileParseException;
/**
*
* @return returns true if the configuration exists else returns false
*/
boolean configExists();
}