Prática do DataArts Studio丨A capacidade de ler dados da interface RESTful por meio da interface Rest Client

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:

cke_138.png

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

cke_139.png

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

cke_140.png

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 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
{{o.name}}
{{m.name}}

Acho que você gosta

Origin my.oschina.net/u/4526289/blog/10089964
Recomendado
Clasificación