Formato Parquet no Azure Data Factory e no Azure Synapse Analytics
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Dica
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!
Siga este artigo quando desejar analisar os arquivos parquet ou gravar os dados no formato parquet.
O formato parquet tem suporte para os seguintes conectores:
- Amazon S3
- Armazenamento compatível com Amazon S3
- Blob do Azure
- Azure Data Lake Storage Gen1
- Azure Data Lake Storage Gen2
- Arquivos do Azure
- Sistema de Arquivos
- FTP
- Google Cloud Storage
- HDFS
- HTTP
- Oracle Cloud Storage
- SFTP
Para obter uma lista de recursos com suporte para todos os conectores disponíveis, visite o artigo Visão geral dos conectores.
Usando tempo de execução de integração auto-hospedado
Importante
Para cópia habilitada pelo runtime de integração auto-hospedada, por exemplo, entre armazenamentos de dados locais e em nuvem, se você não estiver copiando arquivos Parquet no estado em que se encontram, é necessário instalar o JRE (Java Runtime Environment) 8 de 64 bits, JDK (kit de desenvolvimento Java) 23 ou OpenJDK na sua máquina de IR. Confira o próximo parágrafo para obter mais detalhes.
Para cópia em execução no IR auto-hospedado com serialização/desserialização de arquivo Parquet, o serviço encontra o runtime do Java verificando o registro (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome)
para JRE, em primeiro lugar e, se não encontrado, realiza, em segundo lugar, a verificação na variável do sistema JAVA_HOME
para o OpenJDK.
- Para usar JRE: o IR de 64 bits requer JRE de 64 bits. É possível encontrá-lo aqui.
- Para usar o JDK: O IR de 64 bits requer o JDK 23 de 64 bits. É possível encontrá-lo aqui. Certifique-se de atualizar a variável de sistema
JAVA_HOME
para a pasta raiz da instalação do JDK 23, ou seja,C:\Program Files\Java\jdk-23
, e adicionar o caminho para as pastasC:\Program Files\Java\jdk-23\bin
eC:\Program Files\Java\jdk-23\bin\server
à variável de sistemaPath
. - Para usar o OpenJDK: ele é compatível desde a versão do IR 3.13. Empacote o jvm.dll com todos os outros assemblies necessários do OpenJDK no IR Auto-hospedado do computador e defina a variável de ambiente do sistema JAVA_HOME adequadamente e, em seguida, reinicie o IR Auto-hospedado para entrar em vigor imediatamente. Para baixar o Microsoft Build do OpenJDK, consulte o Microsoft Build do OpenJDK™.
Dica
Se você copiar os dados para/do formato Parquet usando o IR auto-hospedado e ocorrências de erro informando que "Ocorreu um erro ao chamar o java, mensagem: espaço de heap java.lang.OutOfMemoryError:Java", poderá adicionar uma variável de ambiente _JAVA_OPTIONS
na máquina que hospeda o IR auto-hospedado para ajustar o tamanho mín/máx do heap para JVM para capacitar a cópia e executar novamente o pipeline.
Exemplo: defina a variável _JAVA_OPTIONS
com o valor -Xms256m -Xmx16g
. O sinalizador Xms
especifica o pool de alocação de memória inicial para uma JVM (Máquina Virtual Java), enquanto Xmx
especifica o pool de alocação de memória máxima. Isso significa que a JVM será iniciada com Xms
quantidade de memória e será capaz de usar um máximo de Xmx
quantidade de memória. Por padrão, o serviço usa no mínimo 64 MB e no máximo 1 G.
Propriedades do conjunto de dados
Para obter uma lista completa das seções e propriedades disponíveis para definir os conjuntos de dados, confira o artigo sobre Conjuntos de Dados. Esta seção fornece uma lista das propriedades com suporte pelo conjunto de dados do Parquet.
Propriedade | Descrição | Obrigatório |
---|---|---|
type | A propriedade Type do conjunto de dados deve ser definida como Parquet. | Sim |
local | Configurações de local dos arquivos. Cada conector baseado em arquivo tem seu próprio tipo de local e propriedades com suporte em location . Veja os detalhes na seção do artigo sobre o conector –> Propriedades do conjunto de dados. |
Sim |
Codec de compactação | O codec de compactação a ser usado ao gravar em arquivos parquet. Ao ler de arquivos parquet, as fábricas de dados determinam automaticamente o codec de compactação com base nos metadados do arquivo. Os tipos com suporte são "none", "gzip", "snappy" (padrão) e "lzo". Observação: atualmente a atividade de cópia não dá suporte a LZO ao ler/gravar arquivos parquet. |
Não |
Observação
Não há suporte para o espaço em branco no nome da coluna para arquivos parquet.
Veja abaixo um exemplo de conjunto de dados parquet no Armazenamento de Blobs do Azure:
{
"name": "ParquetDataset",
"properties": {
"type": "Parquet",
"linkedServiceName": {
"referenceName": "<Azure Blob Storage linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, retrievable during authoring > ],
"typeProperties": {
"location": {
"type": "AzureBlobStorageLocation",
"container": "containername",
"folderPath": "folder/subfolder",
},
"compressionCodec": "snappy"
}
}
}
Propriedades da atividade de cópia
Para obter uma lista completa das seções e propriedades disponíveis para definir atividades, confia o artigo Pipelines. Esta seção fornece uma lista das propriedades suportadas pela fonte parquet e pelo coletor.
Parquet como fonte
As propriedades a seguir têm suporte na seção de *origem* da atividade Copy.
Propriedade | Descrição | Obrigatório |
---|---|---|
type | A propriedade Type da fonte da atividade de cópia deve ser definida como ParquetSource. | Sim |
storeSettings | Um grupo de propriedades sobre como ler dados de um armazenamento de dados. Cada conector baseado em arquivo tem suas próprias configurações de leitura com suporte em storeSettings . Veja os detalhes na seção do artigo sobre o conector –> Propriedades da atividade Copy. |
Não |
Parquet como coletor
As propriedades a seguir têm suporte na seção do *coletor* da atividade Copy.
Propriedade | Descrição | Obrigatório |
---|---|---|
type | A propriedade Type do coletor da atividade de cópia deve ser definida como ParquetSink. | Sim |
formatSettings | Um grupo de propriedades. Consulte a tabela Configurações de gravação de parquet abaixo. | Não |
storeSettings | Um grupo de propriedades sobre como gravar dados em um armazenamento de dados. Cada conector baseado em arquivo tem suas próprias configurações de gravação com suporte em storeSettings . Veja os detalhes na seção do artigo sobre o conector –> Propriedades da atividade Copy. |
Não |
Configurações de gravação de parquet com suporte em formatSettings
:
Propriedade | Descrição | Obrigatório |
---|---|---|
type | O tipo de formatSettings deve ser definido como ParquetWriteSettings. | Sim |
maxRowsPerFile | Ao gravar dados em uma pasta, você pode optar por gravar em vários arquivos e especificar o máximo de linhas por arquivo. | Não |
fileNamePrefix | Aplicável quando maxRowsPerFile for configurado.Especifique o prefixo do nome do arquivo ao gravar dados em vários arquivos, resultando neste padrão: <fileNamePrefix>_00000.<fileExtension> . Se não for especificado, o prefixo de nome de arquivo será gerado automaticamente. Essa propriedade não se aplica quando a fonte é um armazenamento baseado em arquivo ou armazenamento de dados habilitado para opção de partição. |
Não |
Mapeamento de propriedades de fluxo de dados
Nos fluxos de dados de mapeamento, é possível fazer leituras e gravações no formato Parquet nos seguintes armazenamentos de dados: Armazenamento de Blobs do Azure, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2 e SFTP, e você poderá ler o formato Parquet no Amazon S3.
Propriedades da Origem
A tabela abaixo lista as propriedades suportadas por uma fonte parquet. Você pode editar essas propriedades na guia Opções de fonte.
Nome | Descrição | Obrigatório | Valores permitidos | Propriedade do script do Fluxo de Dados |
---|---|---|---|---|
Formatar | O formato deve ser parquet |
sim | parquet |
format |
Caminhos curinga | Todos os arquivos correspondentes ao caminho curinga serão processados. Substitui a pasta e o caminho do arquivo definido no conjunto de dados. | não | String[] | wildcardPaths |
Caminho raiz da partição | Para dados de arquivo particionados, é possível inserir um caminho raiz de partição para ler pastas particionadas como colunas | não | String | partitionRootPath |
Lista de arquivos | Se sua fonte estiver apontando para um arquivo de texto que lista os arquivos a serem processados | não | true ou false |
fileList |
Coluna para armazenar o nome do arquivo | Criar uma nova coluna com o nome e o caminho do arquivo de origem | não | String | rowUrlColumn |
Após a conclusão | Exclua ou mova os arquivos após o processamento. O caminho do arquivo inicia a partir da raiz do contêiner | não | Excluir: true ou false Mover [<from>, <to>] |
purgeFiles moveFiles |
Filtrar pela última modificação | Escolher filtrar arquivos com base na última alteração | não | Carimbo de data/hora | modifiedAfter modifiedBefore |
Permitir nenhum arquivo encontrado | Se for true, um erro não será gerado caso nenhum arquivo seja encontrado | não | true ou false |
ignoreNoFilesFound |
Exemplo de fonte
A imagem abaixo é um exemplo de uma configuração de fonte parquet nos fluxos de dados de mapeamento.
O script de fluxo de dados associado é:
source(allowSchemaDrift: true,
validateSchema: false,
rowUrlColumn: 'fileName',
format: 'parquet') ~> ParquetSource
Propriedades do coletor
A tabela abaixo lista as propriedades suportadas por um coletor parquet. Você pode editar essas propriedades na guia Configurações.
Nome | Descrição | Obrigatório | Valores permitidos | Propriedade do script do Fluxo de Dados |
---|---|---|---|---|
Formatar | O formato deve ser parquet |
sim | parquet |
format |
Limpe a pasta | Se a pasta de destino for limpa antes da gravação | não | true ou false |
truncate |
Opção do nome do arquivo | O formato de nomenclatura dos dados gravados. Por padrão, um arquivo por partição no formato part-#####-tid-<guid> |
não | Padrão: cadeia de caracteres Por partição: cadeia de caracteres [] Como dados na coluna: cadeia de caracteres Saída para arquivo único: ['<fileName>'] |
filePattern partitionFileNames rowUrlColumn partitionFileNames |
Exemplo de coletor
A imagem abaixo é um exemplo de uma configuração de coletor de parquet nos fluxos de dados de mapeamento.
O script de fluxo de dados associado é:
ParquetSource sink(
format: 'parquet',
filePattern:'output[n].parquet',
truncate: true,
allowSchemaDrift: true,
validateSchema: false,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> ParquetSink
Suporte do tipo de dados
Os tipos de dados complexos de parquet (por exemplo, MAP, LIST, STRUCT) são atualmente suportados apenas em Fluxos de Dados, e não em Atividade de Cópia. Para utilizar tipos complexos nos fluxos de dados, não importe o esquema de arquivos no conjunto de dados, deixando o esquema em branco no conjunto de dados. Em seguida, na transformação de Origem, importe a projeção.