Use o Spark SQL com o Dataproc Metastore

Esta página mostra um exemplo de utilização do Spark SQL com um serviço Dataproc Metastore. Neste exemplo, inicia uma sessão do Spark SQL num cluster do Dataproc e executa alguns comandos de amostra para criar uma base de dados e uma tabela.

Antes de começar

Estabeleça ligação ao Spark SQL

Para começar a usar o Spark SQL, use o SSH para estabelecer ligação ao cluster do Dataproc associado ao serviço Dataproc Metastore. Depois de se ligar ao cluster com SSH, pode executar comandos do Spark para gerir os metadados.

Para se ligar ao Spark SQL

  1. Na Google Cloud consola, aceda à página Instâncias de VM.
  2. Na lista de instâncias de máquinas virtuais, clique em SSH na linha da instância de VM do Dataproc à qual quer estabelecer ligação.

É aberta uma janela do navegador no diretório base do nó com um resultado semelhante ao seguinte:

Connected, host fingerprint: ssh-rsa ...
Linux cluster-1-m 3.16.0-0.bpo.4-amd64 ...
...
example-cluster@cluster-1-m:~$

Para iniciar o Hive e criar uma base de dados e uma tabela, execute os seguintes comandos na sessão SSH:

  1. Inicie o shell do Spark.

    spark-shell
    
  2. Cria uma base de dados denominada myDB.

    spark.sql("create database myDB");
    
  3. Use a base de dados que criou.

    spark.sql("use myDB");
    
  4. Cria uma tabela denominada myTable.

    spark.sql("create table bar(id int,name string)");
    
  5. Liste as tabelas em myDatabase.

    spark.sql("show tables").show();
    
  6. Mostrar as linhas da tabela na tabela que criou.

    desc myTable;
    

A execução destes comandos mostra um resultado semelhante ao seguinte:

$spark-shell

scala>spark.sql("create database myDB");

scala>spark.sql("use myTable");

scala>spark.sql("create table myTable(id int,name string)");

scala>spark.sql("show tables").show();

+--------+---------+-----------+
|database|tableName|isTemporary|
+--------+---------+-----------+
|    myDB|  myTable|      false|
+--------+---------+-----------+
+--------+---------+-------+
|col_name|data_type|comment|
+--------+---------+-------+
|      id|      int|   null|
|    name|   string|   null|
+--------+---------+-------+

O que se segue?