Formato parquet no Azure Data FactoryParquet format in Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Siga este artigo quando desejar analisar os arquivos parquet ou gravar os dados no formato parquet.Follow this article when you want to parse the Parquet files or write the data into Parquet format.

O formato parquet tem suporte para os seguintes conectores: Amazon S3, blob do Azure, Azure data Lake Storage Gen1, Azure data Lake Storage Gen2, armazenamento de arquivos do Azure, sistema de arquivos, FTP, Google Cloud Storage, HDFS, httpe SFTP.Parquet format is supported for the following connectors: Amazon S3, Azure Blob, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure File Storage, File System, FTP, Google Cloud Storage, HDFS, HTTP, and SFTP.

Propriedades do conjunto de dadosDataset properties

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.For a full list of sections and properties available for defining datasets, see the Datasets article. Esta seção fornece uma lista das propriedades com suporte pelo conjunto de parquet.This section provides a list of properties supported by the Parquet dataset.

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade Type do conjunto de conjuntos deve ser definida como parquet.The type property of the dataset must be set to Parquet. YesYes
locallocation Configurações de local dos arquivos.Location settings of the file(s). Cada conector baseado em arquivo tem seu próprio tipo de local e propriedades com suporte em location .Each file-based connector has its own location type and supported properties under location. Consulte os detalhes no artigo do conector – > seção Propriedades do conjunto de informações.See details in connector article -> Dataset properties section. YesYes
compressionCodeccompressionCodec O codec de compactação a ser usado ao gravar em arquivos parquet.The compression codec to use when writing to Parquet files. Ao ler de arquivos parquet, as fábricas de dados determinam automaticamente o codec de compactação com base nos metadados do arquivo.When reading from Parquet files, Data Factories automatically determine the compression codec based on the file metadata.
Os tipos com suporte são "None", "gzip", "encaixado" (padrão) e "LZO".Supported types are “none”, “gzip”, “snappy” (default), and "lzo". Observação a atividade de cópia atualmente não dá suporte a LZO quando arquivos parquet de leitura/gravação.Note currently Copy activity doesn't support LZO when read/write Parquet files.
NoNo

Observação

Não há suporte para o espaço em branco no nome da coluna para arquivos parquet.White space in column name is not supported for Parquet files.

Veja abaixo um exemplo de conjunto de parquet no armazenamento de BLOBs do Azure:Below is an example of Parquet dataset on Azure Blob Storage:

{
    "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ópiaCopy activity properties

Para obter uma lista completa das seções e propriedades disponíveis para definir atividades, confia o artigo Pipelines.For a full list of sections and properties available for defining activities, see the Pipelines article. Esta seção fornece uma lista das propriedades com suporte pela origem e pelo coletor do parquet.This section provides a list of properties supported by the Parquet source and sink.

Parquet como fonteParquet as source

As propriedades a seguir têm suporte na seção atividade de cópia **_ _ origem ****.The following properties are supported in the copy activity __source** section.

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade Type da fonte da atividade de cópia deve ser definida como ParquetSource.The type property of the copy activity source must be set to ParquetSource. YesYes
storeSettingsstoreSettings Um grupo de propriedades sobre como ler dados de um armazenamento de dados.A group of properties on how to read data from a data store. Cada conector baseado em arquivo tem suas próprias configurações de leitura com suporte em storeSettings .Each file-based connector has its own supported read settings under storeSettings. Veja os detalhes no artigo do conector – > seção Propriedades da atividade de cópia.See details in connector article -> Copy activity properties section. NoNo

Parquet como coletorParquet as sink

As propriedades a seguir têm suporte na seção atividade de cópia **_ _ Sink ****.The following properties are supported in the copy activity __sink** section.

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype A propriedade Type do coletor da atividade de cópia deve ser definida como ParquetSink.The type property of the copy activity sink must be set to ParquetSink. YesYes
formatSettingsformatSettings Um grupo de propriedades.A group of properties. Consulte a tabela configurações de gravação de parquet abaixo.Refer to Parquet write settings table below. NoNo
storeSettingsstoreSettings Um grupo de propriedades sobre como gravar dados em um armazenamento de dados.A group of properties on how to write data to a data store. Cada conector baseado em arquivo tem suas próprias configurações de gravação com suporte em storeSettings .Each file-based connector has its own supported write settings under storeSettings. Veja os detalhes no artigo do conector – > seção Propriedades da atividade de cópia.See details in connector article -> Copy activity properties section. NoNo

Configurações de gravação de parquet com suporte em formatSettings :Supported Parquet write settings under formatSettings:

PropriedadeProperty DescriçãoDescription ObrigatórioRequired
typetype O tipo de formatSettings deve ser definido como ParquetWriteSettings.The type of formatSettings must be set to ParquetWriteSettings. YesYes
maxRowsPerFilemaxRowsPerFile Ao gravar dados em uma pasta, você pode optar por gravar em vários arquivos e especificar o máximo de linhas por arquivo.When writing data into a folder, you can choose to write to multiple files and specify the max rows per file. NoNo
fileNamePrefixfileNamePrefix Aplicável quando o maxRowsPerFile está configurado.Applicable when maxRowsPerFile is configured.
Especifique o prefixo do nome do arquivo ao gravar dados em vários arquivos, resultando neste padrão: <fileNamePrefix>_00000.<fileExtension> .Specify the file name prefix when writing data to multiple files, resulted in this pattern: <fileNamePrefix>_00000.<fileExtension>. Se não for especificado, o prefixo de nome de arquivo será gerado automaticamente.If not specified, file name prefix will be auto generated. Essa propriedade não se aplica quando a origem é um armazenamento de dados habilitado para opçãode armazenamento ou de partição baseada em arquivo.This property does not apply when source is file-based store or partition-option-enabled data store.
NoNo

Propriedades do fluxo de dados de mapeamentoMapping data flow properties

No mapeamento de fluxos de dados, você pode ler e gravar no formato parquet nos seguintes armazenamentos de dados: armazenamento de BLOBs do Azure, Azure data Lake Storage Gen1e Azure data Lake Storage Gen2.In mapping data flows, you can read and write to parquet format in the following data stores: Azure Blob Storage, Azure Data Lake Storage Gen1, and Azure Data Lake Storage Gen2.

Propriedades de origemSource properties

A tabela abaixo lista as propriedades com suporte por uma fonte parquet.The below table lists the properties supported by a parquet source. Você pode editar essas propriedades na guia Opções de origem .You can edit these properties in the Source options tab.

NameName DescriçãoDescription ObrigatórioRequired Valores permitidosAllowed values Propriedade de script de fluxo de dadosData flow script property
FormatarFormat O formato deve ser parquetFormat must be parquet simyes parquet formatformat
Caminhos curingaWild card paths Todos os arquivos correspondentes ao caminho curinga serão processados.All files matching the wildcard path will be processed. Substitui a pasta e o caminho do arquivo definido no conjunto de um.Overrides the folder and file path set in the dataset. nono String[]String[] wildcardPathswildcardPaths
Caminho raiz da partiçãoPartition root path Para dados de arquivo particionados, você pode inserir um caminho raiz de partição para ler pastas particionadas como colunasFor file data that is partitioned, you can enter a partition root path in order to read partitioned folders as columns nono StringString partitionRootPathpartitionRootPath
Lista de arquivosList of files Se sua fonte está apontando para um arquivo de texto que lista os arquivos a serem processadosWhether your source is pointing to a text file that lists files to process nono true ou falsetrue or false FilefileList
Coluna para armazenar o nome do arquivoColumn to store file name Criar uma nova coluna com o nome e o caminho do arquivo de origemCreate a new column with the source file name and path nono StringString rowUrlColumnrowUrlColumn
Após a conclusãoAfter completion Exclua ou mova os arquivos após o processamento.Delete or move the files after processing. O caminho do arquivo inicia a partir da raiz do contêinerFile path starts from the container root nono Excluir: true ou falseDelete: true or false
Prosseguir [<from>, <to>]Move: [<from>, <to>]
purgeFilespurgeFiles
MoveFilemoveFiles
Filtrar por última modificaçãoFilter by last modified Escolher filtrar arquivos com base na última alteraçãoChoose to filter files based upon when they were last altered nono TimestampTimestamp modifiedAftermodifiedAfter
modifiedBeforemodifiedBefore
Não permitir nenhum arquivo encontradoAllow no files found Se for true, um erro não será gerado se nenhum arquivo for encontradoIf true, an error is not thrown if no files are found nono true ou falsetrue or false ignoreNoFilesFoundignoreNoFilesFound

Exemplo de origemSource example

A imagem abaixo é um exemplo de uma configuração de origem parquet no mapeamento de fluxos de dados.The below image is an example of a parquet source configuration in mapping data flows.

Origem do parquet

O script de fluxo de dados associado é:The associated data flow script is:

source(allowSchemaDrift: true,
    validateSchema: false,
    rowUrlColumn: 'fileName',
    format: 'parquet') ~> ParquetSource

Propriedades do coletorSink properties

A tabela abaixo lista as propriedades com suporte de um coletor parquet.The below table lists the properties supported by a parquet sink. Você pode editar essas propriedades na guia configurações .You can edit these properties in the Settings tab.

NameName DescriçãoDescription ObrigatórioRequired Valores permitidosAllowed values Propriedade de script de fluxo de dadosData flow script property
FormatarFormat O formato deve ser parquetFormat must be parquet simyes parquet formatformat
Limpar a pastaClear the folder Se a pasta de destino for limpa antes da gravaçãoIf the destination folder is cleared prior to write nono true ou falsetrue or false truncatetruncate
Opção de nome de arquivoFile name option O formato de nomenclatura dos dados gravados.The naming format of the data written. Por padrão, um arquivo por partição no formato part-#####-tid-<guid>By default, one file per partition in format part-#####-tid-<guid> nono Padrão: cadeia de caracteresPattern: String
Por partição: cadeia de caracteres []Per partition: String[]
Como dados na coluna: StringAs data in column: String
Saída para arquivo único: ['<fileName>']Output to single file: ['<fileName>']
filePatternfilePattern
partitionFileNamespartitionFileNames
rowUrlColumnrowUrlColumn
partitionFileNamespartitionFileNames

Exemplo de coletorSink example

A imagem abaixo é um exemplo de configuração do coletor parquet no mapeamento de fluxos de dados.The below image is an example of a parquet sink configuration in mapping data flows.

Coletor de parquet

O script de fluxo de dados associado é:The associated data flow script is:

ParquetSource sink(
    format: 'parquet',
    filePattern:'output[n].parquet',
    truncate: true,
    allowSchemaDrift: true,
    validateSchema: false,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> ParquetSink

Suporte do tipo de dadosData type support

Os tipos de dados complexos parquet (por exemplo, mapa, lista, STRUCT) atualmente têm suporte apenas em fluxos de dados, não na atividade de cópia.Parquet complex data types (e.g. MAP, LIST, STRUCT) are currently supported only in Data Flows, not in Copy Activity. Para usar tipos complexos em fluxos de dados, não importe o esquema de arquivo no conjunto de dados, deixando o esquema em branco no conjunto de dado.To use complex types in data flows, do not import the file schema in the dataset, leaving schema blank in the dataset. Em seguida, na transformação origem, importe a projeção.Then, in the Source transformation, import the projection.

Usando Integration Runtime auto-hospedadosUsing Self-hosted Integration Runtime

Importante

Para a cópia habilitada pelo Integration Runtime auto-hospedado, por exemplo, entre armazenamentos de dados locais e na nuvem, se você não estiver copiando arquivos parquet no estado em que se encontra, precisará instalar o pacote redistribuível do JRE 8 de 64 bits (Java Runtime Environment) ou OpenJDK e Microsoft Visual C++ 2010 no seu computador ir.For copy empowered by Self-hosted Integration Runtime e.g. between on-premises and cloud data stores, if you are not copying Parquet files as-is, you need to install the 64-bit JRE 8 (Java Runtime Environment) or OpenJDK and Microsoft Visual C++ 2010 Redistributable Package on your IR machine. Verifique o parágrafo a seguir com mais detalhes.Check the following paragraph with more details.

Para a cópia em execução no IR auto-hospedado com a serialização/desserialização de arquivo parquet, o ADF localiza o tempo de execução do Java verificando primeiro o registro do (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome) jre, se não for encontrado, verificando a variável do sistema em segundo lugar JAVA_HOME para OpenJDK.For copy running on Self-hosted IR with Parquet file serialization/deserialization, ADF locates the Java runtime by firstly checking the registry (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome) for JRE, if not found, secondly checking system variable JAVA_HOME for OpenJDK.

  • Para usar o JRE: o IR de 64 bits requer o jre de 64 bits.To use JRE: The 64-bit IR requires 64-bit JRE. É possível encontrá-lo aqui.You can find it from here.
  • Para usar OpenJDK: tem suporte desde a versão de ir 3,13.To use OpenJDK: It's supported since IR version 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 JAVA_HOME adequadamente.Package the jvm.dll with all other required assemblies of OpenJDK into Self-hosted IR machine, and set system environment variable JAVA_HOME accordingly.
  • Para instalar Visual C++ pacote redistribuível 2010: o pacote redistribuível Visual C++ 2010 não está instalado com instalações de ir de hospedagem interna.To install Visual C++ 2010 Redistributable Package: Visual C++ 2010 Redistributable Package is not installed with self-hosted IR installations. É possível encontrá-lo aqui.You can find it from here.

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.If you copy data to/from Parquet format using Self-hosted Integration Runtime and hit error saying "An error occurred when invoking java, message: java.lang.OutOfMemoryError:Java heap space", you can add an environment variable _JAVA_OPTIONS in the machine that hosts the Self-hosted IR to adjust the min/max heap size for JVM to empower such copy, then rerun the pipeline.

Definir o tamanho do heap da JVM no IR auto-hospedado

Exemplo: defina a variável _JAVA_OPTIONS com o valor -Xms256m -Xmx16g.Example: set variable _JAVA_OPTIONS with value -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.The flag Xms specifies the initial memory allocation pool for a Java Virtual Machine (JVM), while Xmx specifies the maximum memory allocation pool. 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.This means that JVM will be started with Xms amount of memory and will be able to use a maximum of Xmx amount of memory. Por padrão, o ADF usa mín. 64 MB e máximo 1G.By default, ADF use min 64 MB and max 1G.

Próximas etapasNext steps