Use Java Database Connectivity (JDBC) para acessar o service Lindorm Distributed Processing System (LDPS) e utilizar Spark SQL em consultas, análises e geração de dados.
Pré-requisitos
Crie uma instância Lindorm e ative o LindormTable. Para mais informações, consulte Criar uma instância.
Ative o service LDPS. Para mais detalhes, consulte Ativar o LDPS.
Instale um ambiente de desenvolvimento Java. É necessário JDK 1.8 ou superior.
Endpoint JDBC
Para visualizar o endpoint JDBC e o endereço JAR do LDPS, clique em Database Connection na página de detalhes da instância e selecione a aba Compute Engine. Para mais informações, consulte Visualizar endpoints. O LDPS fornece endpoints JDBC para conexões via VPC e rede pública no formato jdbc:hive2://<host>:<port>.
Conectar ao JDBC com Beeline
Baixe o pacote de distribuição do Spark.
Descompacte o pacote de distribuição do Spark.
-
Defina a variável de ambiente SPARK_HOME como o diretório do pacote descompactado.
export SPARK_HOME=/path/to/spark/; -
Configure o arquivo
$SPARK_HOME/conf/beeline.conf.endpoint: endpoint JDBC do LDPS.
user: nome de usuário para acessar o LindormTable.
password: senha do usuário especificado.
shareResource: define se os recursos do Spark são compartilhados entre várias sessões interativas. O valor padrão é true.
NotaPara configurar parâmetros adicionais de job, adicione-os ao arquivo beeline.conf. Cada linha deve conter apenas um parâmetro no formato
key=value. Exemplo:spark.dynamicAllocation.minExecutors=3. -
Execute o comando
$SPARK_HOME/bin/beelinee insira instruções SQL na sessão interativa.O LDPS acessa diversas fontes de dados. Para mais informações, consulte Notas de uso.
Por exemplo, após ativar o Hive Metastore para o Lindorm, use as instruções abaixo para criar uma tabela e executar operações de leitura e escrita. Para saber como ativar o service, consulte Ativar o Hive Metastore.
CREATE TABLE test (id INT, name STRING); INSERT INTO test VALUES (0, 'Jay'), (1, 'Edison'); SELECT id, name FROM test;
Conectar ao JDBC com Java
-
Adicione a dependência JDBC ao seu projeto. O exemplo abaixo usa Maven.
<dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version>2.3.8</version> </dependency> -
Use o código Java a seguir para conectar-se ao service JDBC:
import java.sql.*; public class App { public static void main(String[] args) throws Exception { Class.forName("org.apache.hive.jdbc.HiveDriver"); String endpoint = "jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****"; String user = ""; String password = ""; Connection con = DriverManager.getConnection(endpoint, user, password); Statement stmt = con.createStatement(); String sql = "SELECT * FROM test"; ResultSet res = stmt.executeQuery(sql); while (res.next()) { System.out.println(res.getString(1)); } } } -
Opcional: Para configurar parâmetros adicionais de job, adicione-os à string do endpoint JDBC, conforme o exemplo:
String endpoint = "jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****;spark.dynamicAllocation.minExecutors=3;spark.sql.adaptive.enabled=false";
Conectar ao JDBC com Python
Baixe o pacote de distribuição do Spark.
Descompacte o pacote de distribuição do Spark.
-
Configure as variáveis de caminho.
-
Defina a variável de ambiente SPARK_HOME.
export SPARK_HOME=/path/to/dir/; -
Defina a variável de ambiente CLASSPATH.
export CLASSPATH=$CLASSPATH:$SPARK_HOME/jars/*; -
Instale o JayDeBeApi.
pip install JayDeBeApi
-
-
Use o código Python a seguir para conectar-se ao service JDBC:
import jaydebeapi driver = 'org.apache.hive.jdbc.HiveDriver' endpoint = 'jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****' jarPath = '/path/to/sparkhome/jars/hive-jdbc-****.jar' user = '****' password = '****' conn=jaydebeapi.connect(driver, endpoint, [user, password], [jarPath]) cursor = conn.cursor() cursor.execute("select 1") results = cursor.fetchall() cursor.close() conn.close() -
Opcional: Para configurar parâmetros adicionais de job, adicione-os à string do endpoint JDBC, conforme o exemplo:
endpoint = "jdbc:hive2://123.234.XX.XX:10009/;?token=bisdfjis-f7dc-fdsa-9qwe-dasdfhhv8****;spark.dynamicAllocation.minExecutors=3;spark.sql.adaptive.enabled=false"