Use o Spark SQL em um cluster do AnalyticDB for MySQL para ler e gravar dados em tabelas C-Store (mecanismo XUANWU) nos modos em lote ou em tempo real.
Pré-requisitos
Antes de começar, verifique se você tem:
-
Um cluster do AnalyticDB for MySQL nas edições Enterprise, Basic ou Data Lakehouse:
Data Lakehouse Edition: deve ter mais de 0 ACUs de recursos de armazenamento reservados
Enterprise Edition: deve ter mais de 0 ACUs de recursos reservados
Basic Edition: deve ter mais de 0 ACUs de recursos reservados
Um grupo de recursos de job criado para o cluster
Uma conta de banco de dados criada para o cluster
Escolha um modo
Dois modos estão disponíveis conforme o caso de uso:
|
Modo |
Instrução |
Grupo de recursos necessário |
|
Modo em lote |
|
Mecanismo Spark e um grupo de recursos de job |
|
Modo em tempo real |
|
Mecanismo Spark, grupo de recursos de job e um grupo de recursos interativo (especificado via comando |
Etapa 1: Acesse o desenvolvimento SQL
Faça login no console do AnalyticDB for MySQL. No canto superior esquerdo, selecione uma região. No painel de navegação à esquerda, clique em Clusters, localize o cluster e clique no ID correspondente.
No painel de navegação à esquerda, escolha Job Development > SQL Development.
Na aba SQLConsole, selecione o mecanismo Spark e um grupo de recursos de job.
Etapa 2: Crie um banco de dados e uma tabela C-Store
Execute as instruções a seguir no modo de processamento em lote ou no modo interativo. Para obter detalhes, consulte Modos de execução do Spark SQL .
-
Crie um banco de dados:
CREATE DATABASE spark_create_adb_db_test; -
Crie uma tabela C-Store. Para a sintaxe completa de criação de tabela, consulte Criar uma tabela interna usando Spark SQL.
CREATE TABLE spark_create_adb_db_test.test_adb_tbl ( id int, name string COMMENT 'test_name', age int ) using adb TBLPROPERTIES('primaryKey'='id,age', 'distributeType'='HASH', 'distributeColumns'='id', 'partitionType'='value', 'partitionColumn'='age', 'partitionCount'='120', 'storagePolicy'='COLD' );
Etapa 3: Leia e grave dados
Ao executar uma instrução Spark SQL, o sistema retorna apenas uma mensagem de sucesso ou falha, sem dados inline. Para visualizar os dados da tabela, verifique os Logs na aba Application List da página Spark Jar Development . Para obter detalhes, consulte Visualizar informações de aplicativos Spark .
Modo em lote (INSERT OVERWRITE)
Observações de uso
O Spark SQL oferece suporte a
SELECTeINSERTapenas para tabelas particionadas. Não há suporte para tabelas não particionadas. Para saber como criar tabelas particionadas, consulte CREATE TABLE.Não há suporte para as instruções
UPDATEeDELETEem tabelas C-Store, independentemente do particionamento.-
Para consultar dados quentes, conclua as etapas a seguir antes de executar qualquer consulta. Caso contrário, as consultas falharão.
-
Use o mecanismo XIHE para ativar a configuração de partição quente:
SET adb_config ELASTIC_ENABLE_HOT_PARTITION_HAS_HDD_REPLICA=true; -
Acione um job BUILD para reconstruir o índice:
-
Build specific partitions (requer versão do cluster V3.1.6.0 ou posterior): > Important: Para visualizar e atualizar a versão secundária, acesse a seção Configuration Information na página Cluster Information.
BUILD TABLE <table_name> force partitions='partition1,partition2'; -
Reconstruir toda a tabela (desativado por padrão, pois reconstruir todas as partições consome muito tempo; envie um ticket para ativar):envie um ticket
BUILD TABLE <table_name> force = true;
-
-
Verifique o status do job BUILD:
SELECT table_name, schema_name, status FROM INFORMATION_SCHEMA.KEPLER_META_BUILD_TASK ORDER BY create_time DESC LIMIT 10;Aguarde a conclusão do job antes de executar consultas.
-
Gravar e ler dados
Grave dados na tabela C-Store usando INSERT OVERWRITE. Há dois métodos de particionamento disponíveis:
-
Partição estática: especifique o valor da partição na cláusula
PARTITION.INSERT OVERWRITE spark_create_adb_db_test.test_adb_tbl partition(age=10) VALUES (1, 'bom'); -
Partição dinâmica: inclua o valor da coluna de partição na lista
VALUES.INSERT OVERWRITE spark_create_adb_db_test.test_adb_tbl partition (age) VALUES (1, 'bom', 10);
Leia dados da tabela:
SELECT * FROM spark_create_adb_db_test.test_adb_tbl;
Modo em tempo real (INSERT INTO)
Use a instrução INSERT INTO para gravar dados no modo em tempo real. Três métodos de conexão estão disponíveis: JDBC, View e Catalog.
Todos os métodos exigem acesso baseado em Elastic Network Interface (ENI), que roteia o tráfego pela VPC do cluster usando um vSwitch e um grupo de segurança.
Método Catalog
Parâmetros do Spark
Configure os parâmetros a seguir para ajustar o desempenho de leitura e gravação.
|
Parâmetro |
Descrição |
Padrão |
|
|
Número de registros gravados por lote. Deve ser um número inteiro positivo. Aplica-se apenas ao modo em tempo real |
600 |
|
|
Tamanho máximo do buffer de memória para operações de gravação, em MB. Deve ser um número inteiro positivo. Aplica-se apenas ao modo em lote |
1024 |
|
|
Número máximo de registros por gravação em lote. Deve ser um número inteiro positivo. Aplica-se apenas ao modo em lote |
500 |
Próximos passos
Modos de execução do Spark SQL: saiba quando usar o modo de processamento em lote versus o modo interativo
Criar uma tabela interna usando Spark SQL: referência completa da sintaxe de criação de tabelas C-Store
Criar e gerenciar um grupo de recursos: configure grupos de recursos de job e interativos