O Impala é um mecanismo de consulta SQL desenvolvido para consultas rápidas, em tempo real e interativas sobre dados na escala de petabytes. Este tópico descreve como criar e configurar um nó EMR Impala no DataWorks para desenvolvimento de dados.
Pré-requisitos
Crie um cluster Alibaba Cloud EMR e registre-o no DataWorks. Para mais informações, consulte New Data Studio: Attach an EMR compute resource.
-
(Opcional, para usuários RAM) Adicione o usuário do Resource Access Management (RAM) responsável pelo desenvolvimento de tarefas ao workspace e atribua a ele a função Development ou Workspace Administrator (esta função inclui permissões amplas e deve ser concedida com cautela). Para mais informações, consulte Add workspace members.
Se você estiver usando uma conta raiz, pule esta etapa.
Configure uma fonte de dados Hive no DataWorks e garanta que ela seja aprovada no teste de conectividade. Para mais informações, consulte Data Source Management.
Limitações
Execute nós EMR Impala apenas em serverless resource group (recomendado) ou em grupos de recursos exclusivos para agendamento.
Os nós EMR Impala operam exclusivamente nos recursos de computação de um cluster de data lake legado (Hadoop). O DataWorks não suporta mais o vínculo de novos clusters Hadoop. No entanto, é possível continuar utilizando os clusters Hadoop já vinculados.
Procedimento
-
Na página do editor de nós EMR Impala, execute as etapas a seguir.
Desenvolver código SQL
No editor SQL, escreva o código da tarefa. Defina variáveis no código utilizando o formato ${variable_name}. Em seguida, atribua um valor à variável na seção Scheduling Parameters, localizada na aba Scheduling Settings no lado direito da página do editor de nós. Isso permite passar parâmetros dinamicamente para tarefas agendadas. Para mais detalhes sobre parâmetros de agendamento, consulte Sources and expressions for scheduling parameters. O código abaixo fornece um exemplo:
SHOW TABLES ; CREATE TABLE IF NOT EXISTS userinfo ( ip STRING COMMENT'IP address', uid STRING COMMENT'User ID' )PARTITIONED BY( dt STRING ); ALTER TABLE userinfo ADD IF NOT EXISTS PARTITION(dt='${bizdate}'); --This can be used with scheduling parameters. SELECT * FROM userinfo ;
NotaUma instrução SQL não pode exceder 130 KB de tamanho.
(Opcional) Configurar parâmetros avançados
No lado direito da página, acesse a aba Scheduling Settings. Na seção , configure os parâmetros específicos descritos na tabela a seguir.
NotaOs parâmetros avançados disponíveis variam conforme o tipo de cluster EMR.
Para configurar propriedades adicionais do Spark open-source, utilize a seção na aba Scheduling Settings no lado direito do nó.
Cluster DataLake/cluster personalizado: EMR on ECS
Parâmetro avançado
Descrição
FLOW_SKIP_SQL_ANALYZE
Modo de execução das instruções SQL. Valores válidos:
-
true: Várias instruções SQL são executadas simultaneamente. -
false(padrão): Apenas uma instrução SQL é executada por vez.
NotaEste parâmetro aplica-se somente a execuções de teste no ambiente de desenvolvimento.
DATAWORKS_SESSION_DISABLE
Este parâmetro aplica-se a execuções de teste diretamente no ambiente de desenvolvimento. Valores válidos:
-
true: Uma nova conexão JDBC é criada sempre que uma instrução SQL é executada. -
false(padrão): A mesma conexão JDBC é reutilizada quando diferentes instruções SQL são executadas dentro do mesmo nó.
NotaQuando este parâmetro está definido como
false, oyarn applicationIddo Hive não é impresso. Para imprimir oyarn applicationId, defina este parâmetro comotrue.priority
A prioridade. Valor padrão: 1.
queue
A fila de agendamento para a qual o job é enviado. Valor padrão: default. Para mais informações sobre o EMR YARN, consulte Configurações básicas de fila.
Cluster Hadoop: EMR on ECS
Parâmetro avançado
Descrição
FLOW_SKIP_SQL_ANALYZE
Modo de execução das instruções SQL. Valores válidos:
-
true: Várias instruções SQL são executadas simultaneamente. -
false(padrão): Apenas uma instrução SQL é executada por vez.
NotaEste parâmetro aplica-se somente a execuções de teste no ambiente de desenvolvimento.
USE_GATEWAY
Define se o job deve ser enviado por meio de um cluster Gateway quando este nó submeter um job. Valores válidos:
-
true: O job é enviado por meio de um cluster Gateway. -
false(padrão): O job não é enviado por meio de um cluster Gateway. Por padrão, o job é enviado para o nó header.
NotaSe o cluster ao qual este nó pertence não estiver associado a um cluster Gateway e você definir manualmente este parâmetro como
true, as submissões subsequentes de jobs EMR falharão.Executar a tarefa SQL
-
Na seção Run Configuration, selecione e configure um Compute Resource, definindo o Compute Resource e o Resource Group.
NotaTambém é possível configurar as CUs for Scheduling com base nos recursos necessários para executar a tarefa. O valor padrão é
0.25CU.Para acessar fontes de dados em uma rede pública ou em um ambiente de rede VPC, utilize um grupo de recursos para agendamento aprovado no teste de conectividade com a fonte de dados. Para mais informações, consulte Network connectivity.
-
Na caixa de diálogo de parâmetros na barra de ferramentas, selecione a fonte de dados Hive criada e clique em Run para executar a tarefa SQL.
NotaAo usar um nó EMR Impala para consultar dados, o retorno máximo é de 10.000 linhas, e o tamanho total dos dados não pode exceder 10 MB.
Clique em Save para salvar a tarefa do nó.
Para executar a tarefa do nó regularmente, configure as definições de agendamento conforme seus requisitos de negócio. Para mais informações, consulte Configure schedule settings.
Após configurar a tarefa do nó, faça o deploy do nó. Para mais informações, consulte Deploy a node.
Depois de realizar o deploy da tarefa, visualize o status de execução da tarefa agendada no Operation Center. Para mais informações, consulte View scheduled tasks.
(Opcional) Visualizar informações de linhagem
Para exibir a linhagem no nível de tabela e de coluna para tarefas EMR Impala no Data Map, ative primeiro os logs de linhagem do Impala no cluster EMR. Este recurso tem suporte apenas para clusters EMR DataLake (tanto metadados HMS quanto DLF são suportados). Para mais informações, consulte Configure lineage for EMR Impala.
Este recurso está em liberação gradual (gray release). Antes de utilizá-lo, abra um ticket ou entre em contato com o suporte técnico da Alibaba Cloud para ativá-lo.
Perguntas frequentes
-
P: Ocorre o erro "Impala JDBC Url is Empty"?
>>> [ERROR][LauncherFactory]: JobLauncher init Failed! java.lang.RuntimeException: Impala JDBC Url is Empty! at com.aliyun.emr.dataworks.dcc.launcher.type.ImpalaJobLauncher.initJdbcConnectionR: Certifique-se de que o serviço Impala foi adicionado ao cluster. O serviço Impala está disponível apenas para usuários existentes.
-
P: Ocorre um erro de tempo limite de conexão durante a execução do nó?
EMR execute task failed! FAILED: Build connection error! Could not open client transport with JDBC Uri: jdbc:hive2://<host>:21050/;auth=noSasl: java.net.ConnectException: Connection timed out (Connection timed out)R: Garanta que o grupo de recursos e o cluster possam se comunicar pela rede. Acesse a lista de recursos de computação e clique em Resource Initialization. Na caixa de diálogo exibida, clique em Re-initialize. Verifique se a inicialização foi bem-sucedida.