Para recuperar informações, executar consultas multidimensionais ou analisar estatisticamente grandes conjuntos de dados no MaxCompute (ODPS), use o Alibaba Cloud Elasticsearch. Este tópico descreve como usar a Integração de Dados no DataWorks para sincronizar grandes volumes de dados do MaxCompute para um cluster do Alibaba Cloud Elasticsearch em poucos minutos.
Contexto
O DataWorks é uma plataforma completa de desenvolvimento e governança de big data, construída sobre mecanismos de big data. Ele integra recursos como desenvolvimento de dados, agendamento de tarefas e gerenciamento de dados. Use as tarefas de sincronização no DataWorks para transferir rapidamente dados de várias fontes para o Alibaba Cloud Elasticsearch.
-
Fontes de dados compatíveis:
Bancos de dados da Alibaba Cloud (MySQL, PostgreSQL, SQL Server, MongoDB e HBase)
Alibaba Cloud PolarDB-X (atualizado a partir do DRDS)
Alibaba Cloud MaxCompute
Alibaba Cloud OSS
Alibaba Cloud Tablestore
Versões autogerenciadas de HDFS, Oracle, FTP, DB2 e outros tipos de banco de dados compatíveis
-
Cenários de uso:
Sincronização offline de big data para o Alibaba Cloud Elasticsearch. Você pode sincronizar um banco de dados inteiro ou todos os dados de uma tabela específica. Para mais informações, consulte Offline synchronization of an entire MySQL database to Elasticsearch.
Sincronização em tempo real de big data para o Alibaba Cloud Elasticsearch. Este método oferece suporte à sincronização completa e incremental. Para mais informações, consulte Real-time synchronization of an entire MySQL database to Elasticsearch.
Pré-requisitos
Crie um projeto no MaxCompute. Para mais informações, consulte Create a MaxCompute project.
Crie um cluster do Alibaba Cloud Elasticsearch e ative o recurso de indexação automática. Para mais informações, consulte Create an Alibaba Cloud Elasticsearch cluster e Configure the YML file.
Crie um workspace do DataWorks. Para mais informações, consulte Create a workspace.
A sincronização de dados é compatível apenas com clusters do Alibaba Cloud Elasticsearch. Clusters Elasticsearch autogerenciados não são suportados.
O projeto do MaxCompute, o cluster do Alibaba Cloud Elasticsearch e o workspace do DataWorks devem estar na mesma região.
O cluster do Alibaba Cloud Elasticsearch, o projeto do MaxCompute e o workspace do DataWorks devem estar no mesmo fuso horário. Caso contrário, podem ocorrer discrepâncias de fuso horário ao sincronizar dados temporais.
Faturamento
Para informações sobre as taxas de uma instância do Alibaba Cloud Elasticsearch, consulte Elasticsearch billable items.
Para detalhes sobre os custos de um grupo de recursos de Integração de Dados, consulte Resource group fees.
Procedimento
Etapa 1: Preparar os dados de origem
Crie uma tabela no MaxCompute e importe dados de teste. Para mais informações, consulte Create a table e Import data.
Este tópico utiliza o seguinte esquema de tabela e dados de amostra:
-
Esquema da tabela
A tabela contém 7 campos e 1 campo de partição. Os campos são definidos da seguinte forma:
create_time(string, chave primária)category(string)brand(string)buyer_id(string)trans_num(bigint)trans_amount(double)click_cnt(bigint)
O campo de partição é
pt(bigint). -
Dados de amostra
A tabela de origem contém os seguintes campos:
create_time: data da transação, por exemplo, 2020/6/1category: categoria do produto, por exemplo, Outerwear, Fresh Food, Electronics, Bathroombrand: nome da marca, por exemplo, Brand A a Brand Gbuyer_id: ID do comprador, por exemplo, user1 a user13trans_num: número de transaçõestrans_amount: valor da transaçãoclick_cnt: número de cliquespt: campo de partição, com valor 1
Etapa 2: Adquirir e configurar um grupo de recursos exclusivo
Adquira um grupo de recursos exclusivo para Integração de Dados e associe-o a uma VPC e a um workspace. Um grupo de recursos exclusivo garante transmissão de dados rápida e estável.
Faça login no console do DataWorks .
Na barra de navegação superior, selecione uma região. No painel de navegação à esquerda, clique em Resource Groups.
Na aba Exclusive Resource Group, escolha .
-
Na página de compra DataWorks Exclusive Resources (Subscription), defina Exclusive Resource Type como Exclusive Resources for Data Integration, insira um nome para o grupo de recursos e clique em Buy Now.
Para mais informações sobre a configuração, consulte Step 1: Purchase a resource group.
-
Localize o grupo de recursos exclusivo criado e clique em Network Settings na coluna Actions para associá-lo a uma VPC. Para mais informações, consulte Bind a VPC.
NotaEste tópico utiliza um grupo de recursos exclusivo para Integração de Dados para sincronizar dados por meio de uma VPC. Para informações sobre como sincronizar dados pela internet, consulte Configure an allowlist.
Para habilitar a sincronização de dados, conecte o grupo de recursos exclusivo à VPC onde reside o cluster do Alibaba Cloud Elasticsearch. Portanto, associe o grupo de recursos exclusivo à Virtual Private Cloud (VPC), Zone e VSwitch do seu cluster Alibaba Cloud Elasticsearch. Para visualizar essas informações, consulte View the basic information of an Elasticsearch cluster.
ImportanteApós associar o grupo de recursos exclusivo à VPC, adicione o vSwitch CIDR Block à lista de permissões de IP privado da VPC do cluster Alibaba Cloud Elasticsearch. Para mais informações, consulte Configure a public or private IP address allowlist for an Elasticsearch cluster.
No canto superior esquerdo da página, clique no ícone de voltar para retornar à página Resource List.
-
Encontre o grupo de recursos exclusivo criado e clique em Associate Workspace na coluna Actions para associá-lo ao workspace de destino.
Para mais informações, consulte Step 2: Associate a workspace.
Etapa 3: Adicionar fontes de dados
Adicione o MaxCompute e o Alibaba Cloud Elasticsearch como fontes de dados na Integração de Dados.
-
Acesse a página Data Integration.
Faça login no console do DataWorks .
No painel de navegação à esquerda, clique em Workspace.
Localize o workspace desejado e escolha na coluna Actions.
No painel de navegação à esquerda, clique em Data Source.
-
Adicione uma fonte de dados MaxCompute.
Na página Data Sources, clique em Add Data Source.
Na página Add Data Source, localize e selecione o tipo de fonte de dados MaxCompute.
-
Na caixa de diálogo Add MaxCompute data source, configure os parâmetros na seção Basic Information.
Para mais informações, consulte Configure a MaxCompute data source.
Na seção Connection Configuration, clique em Test Connectivity. O status Connected indica que a conexão foi bem-sucedida.
Clique em Complete.
Siga o mesmo procedimento para adicionar uma fonte de dados Elasticsearch. Para mais informações, consulte Configure an Elasticsearch data source.
Etapa 4: Configurar e executar uma tarefa de sincronização em lote
Uma tarefa de sincronização em lote usa o grupo de recursos exclusivo. O grupo de recursos recupera dados da fonte de dados na Integração de Dados e grava os dados no cluster do Alibaba Cloud Elasticsearch.
Você pode configurar uma tarefa de sincronização em lote no modo assistente ou no modo script. Este tópico demonstra o modo assistente. Para mais informações, consulte Configure a synchronization task in script mode e Elasticsearch Writer.
As etapas a seguir ocorrem na página legacy Data Development (DataStudio).
-
Acesse a página Data development no DataWorks.
Faça login no console do DataWorks .
No painel de navegação à esquerda, clique em Workspace.
Localize o workspace desejado e escolha na coluna Actions.
-
Crie um nó de sincronização offline.
Na aba Data Development (
), escolha .Clique com o botão direito no fluxo de trabalho criado e escolha .
Na caixa de diálogo Create Node, insira um nome para o nó e clique em OK.
-
Configure a rede e o grupo de recursos.
Na seção Source, defina Source como MaxCompute(ODPS) e selecione sua fonte de dados de origem em Data Source Name.
Na seção Resource Group, selecione o grupo de recursos exclusivo.
Na seção Destination, defina Destination como Elasticsearch e selecione sua fonte de dados de destino em Data Source Name.
Clique em Next step.
-
Configure a tarefa.
Na seção Source, selecione a tabela de origem.
Na seção Destination, configure os parâmetros para o destino.
Na seção Field Mapping, mapeie a Source Column para a Target Column.
Na seção Channel Control, configure os parâmetros do canal.
Para mais informações sobre a configuração, consulte Configure a synchronization task in wizard mode.
-
Execute a tarefa.
(Opcional) Configure as propriedades de agendamento para a tarefa. No painel à direita, clique em Properties e configure os parâmetros de agendamento conforme necessário. Para mais informações sobre os parâmetros, consulte Scheduling configuration.
No canto superior direito da área do nó, clique no ícone Salvar para salvar a tarefa.
-
No canto superior direito da área do nó, clique no ícone Commit.
Se você configurar propriedades de agendamento para a tarefa, ela será executada automaticamente em intervalos programados. Também é possível clicar no ícone Run no canto superior direito da área do nó para executar a tarefa imediatamente.
A mensagem
Shell run successfully!no log de execução indica que a tarefa foi concluída com êxito. Um exemplo do log de execução da tarefa é apresentado abaixo:2023-10-31 16:52:35 INFO Exit code of the Shell command 0 2023-10-31 16:52:35 INFO --- Invocation of Shell command completed --- 2023-10-31 16:52:35 INFO Shell run successfully! 2023-10-31 16:52:35 INFO Current task status: FINISH 2023-10-31 16:52:35 INFO Cost time is: 33.106s
Etapa 5: Verificar o resultado da sincronização de dados
No console do Kibana, visualize os dados sincronizados e execute consultas.
-
Faça login no console do Kibana do cluster Alibaba Cloud Elasticsearch de destino.
Para mais informações, consulte Log on to the Kibana console.
No canto superior esquerdo da página do Kibana, clique no ícone
e selecione Dev Tools.-
No Console, execute o seguinte comando para visualizar os dados sincronizados.
POST /odps_index/_search?pretty { "query": { "match_all": {}} }Notaodps_indexé o valor do campoindexdefinido no script de sincronização de dados.Uma sincronização bem-sucedida retorna o seguinte resultado.
POST /odps_index/_search?pretty { "query": { "match_all": {}} } POST /odps_index/_search?pretty { "query": { "match_all": {} }, "_source": ["category", "brand"] } POST /odps_index/_search?pretty { "query": { "match": {"category":"生鲜"} } } POST /odps_index/_search?pretty { "query": { "match_all": {} }, "sort": { "trans_num": { "order": "desc" } } } --- Response --- { "took" : 2, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 13, "max_score" : null, "hits" : [ { "_index" : "odps_index", "_type" : "_doc", "_id" : "2020/6/7 8:00", "_score" : null, "_source" : { "trans_num" : 88, "click_cnt" : 80, "category" : "外套", "buyer_id" : "user7", "trans_amount" : 150.0, "brand" : "品牌E" }, "sort" : [ 88 ] }, { "_index" : "odps_index", "_type" : "_doc", "_id" : "2020/6/11 8:00", "_score" : null, "_source" : { "trans_num" : 22, "click_cnt" : 70, "category" : "卫浴", "buyer_id" : "user11", "trans_amount" : 4500.0, "brand" : "品牌G" }, "sort" : [ 22 ] } ] } } -
Execute o seguinte comando para buscar os campos
categoryebrandno documento.POST /odps_index/_search?pretty { "query": { "match_all": {} }, "_source": ["category", "brand"] } -
Execute o seguinte comando para pesquisar documentos onde
categorysejafresh food.POST /odps_index/_search?pretty { "query": { "match": {"category":"生鲜"} } } -
Execute o seguinte comando para ordenar os documentos pelo campo
trans_num.POST /odps_index/_search?pretty { "query": { "match_all": {} }, "sort": { "trans_num": { "order": "desc" } } }Para mais comandos e métodos de acesso, consulte o Centro de Ajuda Elastic.co.