Este artigo é compartilhado da comunidade de nuvem da Huawei " A capacidade do DataArts Studio de ler dados da interface RESTful por meio da interface do Rest Client e armazená-los por meio do Hive-SQL ", autor: Zhang Haoqi.
O Rest Client fornece a capacidade de ler dados da interface RESTful. O Rest Client obtém dados do endereço RESTful, converte-os em um tipo de dados compatível com a integração de dados e os passa para o nó downstream hive-sql para armazenamento. Este artigo usa o cenário típico da interface POST como exemplo para mostrar como usar o Rest Client para ler dados do endereço RESTful e sincronizá-los com a tabela hive.
Este artigo orienta a ler dados do endereço RESTful e sincronizá-los com a tabela MRS-Hive. Grosso modo, DataArtStudio gerencia a tarefa de coleta de configuração, envia-a através do serviço CDM e conecta-se com o servidor API de terceiros, e a mensagem de resposta é passada para MSR-Hive-SQL por meio de parâmetros entre nós para análise e armazenamento.
O processo de integração é o seguinte:
O processo de desenvolvimento do programa é o seguinte:
Passo 1: Crie uma tarefa Rest Client no DataArtsStudio
Módulo de desenvolvimento de dados, criar nó Rest Client, inserir parâmetros GET/POST, incluindo método de autenticação, campo de cabeçalho, parâmetro de solicitação/corpo da mensagem
O json no corpo da mensagem de solicitação pode usar expressões EL, como parâmetros de filtragem de tempo de transporte
Corpo JSON corpo
{ "startTime":"#{DateUtil.format(DateUtil.addDays(Job.planTime,-1),"yyyy-MM-dd")}", "endTime":"#{DateUtil.format(DateUtil.now (),"yyyy-MM-dd")}" }
Os parâmetros após a conversão do sistema são os seguintes:
{ "startTime":"2023-07-11", "endTime":"2023-07-12" }
A referência detalhada da expressão EL é a seguinte:
https://support.huaweicloud.com/usermanual-dataartsstudio/dataartsstudio_01_0494.html
A mensagem retornada no JSON da mensagem de resposta está no seguinte formato de array:
Corpo da resposta: {"data": [ { " id":99467, "proportionProjectId":"0405", "proportionProjectName":"Field Allowance", " proportionAfterTax ":40800, "proportionDepartmentId":289 , "proportionDepartmentName":" Departamento de Impostos da Sede", " voucherStatusTime " : 16007 29 6," proportionDepartmentName ":"Main Office Maker Department", "voucherStatusTime":1606209149000, "billsNumber":"2020112402000" } ] }
Etapa 2: MSR-Hive criar tabela
CREATE TABLE IF NOT EXISTS mrs_hive_rest ( `billsNumber` STRING ,`proportionDepartmentId` BIGINT ,`voucherStatusTime` BIGINT ,`proportionProjectId` STRING ,`proportionAfterTax` BIGINT ,`id` BIGINT ,`proportionProjectName` BIGINT ,`proportionDepartmentName` STRING );
Etapa 3: DataArtsStudio cria um script hive-sql para armazenar a mensagem de resposta da interface POST
O módulo de desenvolvimento de dados cria scripts hive-sql, por exemplo:
-- HIVE sql -- ******************************************************************** -- -- autor: zhanghaoqi -- tempo de criação: 2023/07/12 15:50:41 GMT+08:00 -- ******************************************************************** -- SELECT * FROM mrs_hive_rest; INSERT INTO mrs_hive_rest SELECT json_tuple(json, 'billsNumber', 'proportionDepartmentId', 'voucherStatusTime', 'proportionProjectId', 'proportionAfterTax', 'id', 'proportionProjectName', 'proportionDepartmentName') FROM ( SELECT explode(split(regexp_replace(regexp_replace('${jsonStr}' , '\\[|\\]',''),'\\}\\,\\{','\\}\\;\\{'),'\\;')) as json) t ; SELECT * FROM mrs_hive_rest;
Os principais pontos do script SQL são explicados. No script, **${jsonStr}** é citado como a string JSON da mensagem de resposta para análise ( defina e altere o conteúdo do parâmetro na etapa 4 )
Como a mensagem de resposta é uma matriz JSON, os métodos json e string integrados são usados para análise.
Etapa 4: DataArtsStudio cria um nó hive-sql para executar o script
Crie um nó hive-sql e execute o script na etapa 3
Pontos-chave dos parâmetros : Os parâmetros de script extrairão automaticamente os parâmetros referenciados no script SQL. Aqui você precisa configurar o conteúdo dos parâmetros. Os parâmetros usam expressões EL para obter o valor de retorno do nó Rest_Client anterior#{JSONUtil.toString(JSONUtil.path(Job.getNodeOutput("Rest_Client_1729"),"data"))} onde Rest_Client_1729 é o nome da tarefa do nó anterior e data é o caminho de dados do nó nó anterior .
Etapa 5: Execute o script de verificação de execução de teste após a conclusão da configuração
Após a conclusão da configuração, teste e execute o script e verifique os logs para confirmar se o conteúdo atende às expectativas e se o armazenamento SQL foi bem-sucedido.
[2023/07/12 20:13:24 GMT+0800] [INFO] Conectar ao servidor com sucesso
[2023/07/12 20:13:24 GMT+0800] [INFO] Executando SQL:SELECT * FROM mrs_hive_rest;
[2023/07/12 20:13:24 GMT+0800] [INFO] Execute SQL com sucesso
[2023/07/12 20:13:24 GMT+0800] [INFO] Lendo o resultado da execução SQL
[2023/07/12 20:13:24 GMT+0800] [INFO] As primeiras 0 linhas:
[2023/07/12 20:13:24 GMT+0800] [INFO] Leia o resultado da execução SQL com sucesso
[2023/07/12 20:13:24 GMT+0800] [INFO]
[2023/07/12 20:13:24 GMT+0800] [INFO] Executing SQL:INSERT INTO mrs_hive_rest SELECT json_tuple(json, 'billsNumber', 'proportionDepartmentId', 'voucherStatusTime', 'proportionProjectId', 'proportionAfterTax', 'id', 'proportionProjectName', ' proporçãoNomeDepartamento') FROM (
SELECT explodir(split(regexp_replace(regexp_replace('[{"billsNumber":"2020092299467","proportionDepartmentId":289,"voucherStatusTime":1600758794000,"proportionProjectId":"0405","proportionAfterTax":40800, "id": 9946 7, "proportionProjectName": "Field Allowance", "proportionDepartmentName": "Head Office Tax Department"}, {"billsNumber": "2020112402000", "proportionDepartmentId": 296, "voucherStatusTime": 1606209149000, "proportionProject Id": "040102", "proportion AfterTax": 20000, "id": 102000, "proportionProjectName": "040102 _ salário anual dos empregados em departamentos funcionais", "proportionDepartmentName": "Departamento Maker da Sede"}]', '\[|\]',''),'\}\,\{','\}\;\{'),'\; '))
como json) t;
[2023/07/12 20:13:38 GMT+0800] [INFO] Execute SQL com sucesso
[2023/07/12 20:13:38 GMT+0800] [INFO] Lendo o resultado da execução SQL
[2023/07/12 20:13:38 GMT+0800] [INFO] Leia o resultado da execução SQL com sucesso
[2023/07/12 20:13:38 GMT+0800] [INFO]
[2023/07/12 20:13:38 GMT+0800] [INFO] Executando SQL:SELECT * FROM mrs_hive_rest;
[2023/07/12 20:13:38 GMT+0800] [INFO] Execute SQL com sucesso
[2023/07/12 20:13:38 GMT+0800] [INFO] Lendo o resultado da execução SQL
[2023/07/12 20:13:38 GMT+0800] [INFO] As 2 primeiras linhas:
2020092299467,289,1600758794000,0405,40800,99467,null,Fiscal da Sede
2020112402000,296,1606209149000,040102,20000,102000,null,Fabricante Departamento da Sede
[2023/07/12 20:13:38 GMT+0800] [INFO] Leia o resultado da execução SQL com sucesso
[2023/07/12 20:13:38 GMT+0800] [INFO]
Confirme se o script foi executado com êxito e se o armazenamento foi bem-sucedido.
[Cloud Cafe Q&A] A 2ª edição do HUAWEI CLOUD grandes arquitetos de café sentados na batalha, conversando com você sobre inovação de aplicativos, fazendo perguntas e interagindo para ganhar presentes personalizados para desenvolvedores ~ https://bbs.huaweicloud.com/forum/thread-0234124103999807029-1-1.html
Clique para seguir e aprender sobre as novas tecnologias da Huawei Cloud pela primeira vez~
As 8 linguagens de programação mais procuradas em 2023: PHP forte, demanda lenta por C/C++ Notas do programador CherryTree 1.0.0.0 lançado Projeto CentOS declarado "aberto a todos" MySQL 8.1 e MySQL 8.0.34 lançado oficialmente GPT-4 ficando cada vez mais estúpido? A taxa de precisão caiu de 97,6% para 2,4%. Microsoft: Mais esforços para usar Rust Meta no Windows 11 Zoom in: libere o modelo de linguagem grande de código aberto Llama 2, que é gratuito para uso comercial . Talvez este projeto de código aberto GitHub de 5 mil estrelas possa ajudar - 25º aniversário do MetaGPT Wireshark, o mais poderoso analisador de pacotes de rede de código aberto