O OSS-HDFS Service (JindoFS Service) é um produto de armazenamento de data lake nativo da nuvem. Uma fonte de dados OSS-HDFS oferece um canal bidirecional para leitura e gravação no OSS-HDFS. Este tópico descreve os recursos de sincronização de dados que o DataWorks fornece para o OSS-HDFS.
Recursos suportados
|
Recurso |
Suportado |
|
Leitura offline |
Sim |
|
Gravação offline |
Sim |
|
Gravação em tempo real |
Sim |
Limitações
Leitura offline
A conexão de rede entre um grupo de recursos e o OSS-HDFS pode ser complexa. Para executar tarefas de sincronização de dados, use um Grupo de recursos Serverless (recomendado) ou um grupo de recursos exclusivo para Data Integration. Certifique-se de que seu grupo de recursos tenha acesso de rede ao OSS-HDFS.
O OSS-HDFS Reader suporta:
Arquivos nos formatos texto, CSV, ORC e Parquet. O conteúdo do arquivo deve representar uma tabela bidimensional lógica.
Leitura de múltiplos tipos de dados e constantes de coluna.
Leituras recursivas e uso dos caracteres curinga
*e?.Leituras simultâneas de vários arquivos. O número real de threads simultâneas corresponde ao menor valor entre a quantidade de arquivos a serem lidos e a configuração
concurrent.
Devido ao algoritmo interno de fragmentação para arquivos individuais, o OSS-HDFS Reader não suporta leituras simultâneas com múltiplas threads em um único arquivo.
Gravação offline
O OSS-HDFS Writer aceita apenas os formatos texto, ORC e Parquet. O conteúdo do arquivo deve constituir uma tabela bidimensional lógica.
Em arquivos de texto, verifique se o delimitador de campos usado na gravação corresponde ao delimitador definido na criação da tabela Hive. Isso garante que os dados gravados no OSS-HDFS sejam mapeados corretamente para os campos da tabela Hive.
Gravação em tempo real
Suporte a gravações em tempo real.
Compatibilidade com gravações em tempo real para a versão 0.14.x do formato Hudi.
Tipos de campo suportados
Leitura offline
O OSS-HDFS Reader converte os tipos de dados de ParquetFile, ORCFile, TextFile e CsvFile para os tipos internos compatíveis com o Data Integration.
|
Categoria de tipo |
Tipos de dados do OSS-HDFS |
|
Inteiro |
TINYINT, SMALLINT, INT, BIGINT |
|
Ponto flutuante |
FLOAT, DOUBLE, DECIMAL |
|
String |
STRING, CHAR, VARCHAR |
|
Data e hora |
DATE, TIMESTAMP |
|
Booleano |
BOOLEAN |
Os exemplos a seguir ilustram as representações de tipos internos:
LONG: Dados inteiros em um arquivo OSS-HDFS, como 123456789.
DOUBLE: Dados de ponto flutuante em um arquivo OSS-HDFS, como 3,1415.
BOOLEAN: Dados booleanos em um arquivo OSS-HDFS, como true ou false. Os valores não diferenciam maiúsculas de minúsculas.
DATE: Dados de data e hora em um arquivo OSS-HDFS, como 2014-12-31 00:00:00.
Gravação offline
O OSS-HDFS Writer grava arquivos nos formatos TextFile, ORCFile e ParquetFile em um caminho especificado no sistema de arquivos OSS-HDFS.
|
Categoria de tipo |
Tipos de dados do OSS-HDFS |
|
Inteiro |
TINYINT, SMALLINT, INT, BIGINT |
|
Ponto flutuante |
FLOAT, DOUBLE |
|
String |
CHAR, VARCHAR, STRING |
|
Booleano |
BOOLEAN |
|
Data e hora |
DATE, TIMESTAMP |
Adicionar uma fonte de dados
Antes de desenvolver uma tarefa de sincronização no DataWorks, adicione a fonte de dados necessária seguindo as instruções em Gerenciamento de fontes de dados. As descrições dos parâmetros estão disponíveis no console do DataWorks durante a adição da fonte de dados.
Desenvolver uma tarefa de sincronização de dados
Configure uma tarefa de sincronização offline para uma única tabela
Para obter instruções passo a passo, consulte Configurar uma tarefa na interface visual sem código e Configurar uma tarefa no editor de código.
Para obter a lista completa de parâmetros e um exemplo de script, veja Apêndice: Demonstrações de scripts e descrições de parâmetros.
Configure uma tarefa de sincronização em tempo real para uma única tabela
Consulte Configurar sincronização incremental em tempo real para uma única tabela e Configurar uma tarefa de sincronização em tempo real no DataStudio.
Configure uma tarefa de sincronização em tempo real completa e incremental para um banco de dados inteiro
Consulte Configurar uma tarefa de sincronização em tempo real para um banco de dados inteiro.
Apêndice: Demonstrações de scripts e descrições de parâmetros
Demonstração de script do Reader
Todos os parâmetros seguem o formato de script unificado exigido pelo editor de código. Para detalhes sobre o formato, consulte Configurar uma tarefa no editor de código.
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "oss_hdfs",
"parameter": {
"path": "",
"datasource": "",
"column": [
{
"index": 0,
"type": "string"
},
{
"index": 1,
"type": "long"
},
{
"index": 2,
"type": "double"
},
{
"index": 3,
"type": "boolean"
},
{
"format": "yyyy-MM-dd HH:mm:ss",
"index": 4,
"type": "date"
}
],
"fieldDelimiter": ",",
"encoding": "UTF-8",
"fileFormat": ""
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": ""
},
"speed": {
"concurrent": 3,
"throttle": true,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parâmetros do script do Reader
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
|
Caminho do arquivo ou diretório a ser lido. Três estilos de entrada são suportados: OPÇÃO 1: Arquivo único — O OSS-HDFS Reader usa uma única thread para ler o arquivo. OPÇÃO 2: Múltiplos arquivos — O OSS-HDFS Reader lê os arquivos simultaneamente. A contagem real de threads é o menor valor entre o número de arquivos e a configuração |
Sim |
Nenhum |
|
|
Tipo de arquivo. Valores válidos: |
Sim |
Nenhum |
|
|
Lista de campos a serem lidos. Defina como |
Sim |
Nenhum |
|
|
Delimitador de campos para leitura de dados TextFile. Não é necessário para arquivos ORC ou Parquet. |
Não |
|
|
|
Codificação do arquivo. |
Não |
|
|
|
String a ser tratada como valor nulo. Por exemplo, definir |
Não |
Nenhum |
|
|
Formato de compactação. Valores válidos: |
Não |
Nenhum |
Demonstração de script do Writer
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "oss_hdfs",
"parameter": {
"path": "",
"fileName": "",
"compress": "",
"datasource": "",
"column": [
{
"name": "col1",
"type": "string"
},
{
"name": "col2",
"type": "int"
},
{
"name": "col3",
"type": "double"
},
{
"name": "col4",
"type": "boolean"
},
{
"name": "col5",
"type": "date"
}
],
"writeMode": "",
"fieldDelimiter": ",",
"encoding": "",
"fileFormat": "text"
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": ""
},
"speed": {
"concurrent": 3,
"throttle": false
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parâmetros do script do Writer
|
Parâmetro |
Descrição |
Obrigatório |
Valor padrão |
|
|
|
Tipo de arquivo. Valores válidos: |
Sim |
Nenhum |
|
|
|
Caminho no sistema de arquivos OSS-HDFS onde os dados são armazenados. O OSS-HDFS Writer grava vários arquivos neste diretório com base na configuração de simultaneidade. Ao associar a uma tabela Hive, especifique o caminho de armazenamento da tabela Hive no OSS-HDFS. |
Sim |
Nenhum |
|
|
|
Nome base para os arquivos de saída. Um sufixo aleatório é anexado a este nome para cada thread simultânea, formando os nomes reais dos arquivos. |
Sim |
Nenhum |
|
|
|
Campos a serem gravados. Não há suporte para gravação em um subconjunto de colunas. Ao associar a uma tabela Hive, especifique todos os nomes e tipos de campos. Use |
Sim (não necessário se |
Nenhum |
|
|
|
Define como o OSS-HDFS Writer lida com arquivos existentes antes da gravação. O OSS-HDFS Writer utiliza uma estratégia de gravar-e-renomear: os dados são primeiramente escritos em um diretório temporário nomeado pela regra |
Sim |
Nenhum |
|
|
|
Delimitador de campos para arquivos de saída. Apenas delimitadores de caractere único são suportados; múltiplos caracteres causam erro de execução. Não é necessário quando |
Sim (não necessário se |
Nenhum |
|
|
|
Formato de compactação para arquivos de texto. Valores válidos: |
Não |
Nenhum |
|
|
|
Codificação do arquivo. |
Não |
|
|
|
|
Definição de esquema para arquivos de saída Parquet. Só tem efeito quando |
optional> |
Não |
Nenhum |