Formato parquet no Azure Data Factory e no Azure Synapse Analytics

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Siga este artigo quando quiser analisar os ficheiros parquet ou escrever os dados no formato Parquet.

O formato Parquet é suportado para os seguintes conectores:

Para obter uma lista de funcionalidades suportadas para todos os conectores disponíveis, consulte o artigo Descrição Geral dos Conectores .

Utilizar Integration Runtime Autoalojado

Importante

Para copiar com capacidade por Integration Runtime autoalojados, por exemplo, entre arquivos de dados no local e na cloud, se não estiver a copiar ficheiros Parquet tal como está, tem de instalar o JRE 8 de 64 bits (Ambiente de Runtime Java) ou o OpenJDK no seu computador IR. Verifique o parágrafo seguinte com mais detalhes.

Para copiar em execução no IR Autoalojado com serialização/desserialização de ficheiros Parquet, o serviço localiza o runtime java ao verificar primeiro o registo (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome) de JRE, se não for encontrado, verificando em segundo lugar a variável JAVA_HOME de sistema para OpenJDK.

  • Para utilizar JRE: o IR de 64 bits requer JRE de 64 bits. Pode encontrá-lo a partir daqui.
  • Para utilizar o OpenJDK: é suportado desde a versão 3.13 do IR. Empacote o jvm.dll com todas as outras assemblagens necessárias do OpenJDK no computador IR autoalojado e defina a variável de ambiente do sistema JAVA_HOME em conformidade e, em seguida, reinicie o IR Autoalojado para entrar em vigor imediatamente.

Dica

Se copiar dados de/para o formato Parquet com o Integration Runtime autoalojado e ocorrer um erro ao invocar java, mensagem: java.lang.OutOfMemoryError:Java heap space", pode adicionar uma variável _JAVA_OPTIONS de ambiente no computador que aloja o IR autoalojado para ajustar o tamanho mínimo/máximo da área dinâmica para JVM para capacitar essa cópia e, em seguida, executar novamente o pipeline.

Definir o tamanho da área dinâmica do JVM no IR Autoalojado

Exemplo: defina a variável _JAVA_OPTIONS com o valor -Xms256m -Xmx16g. O sinalizador Xms especifica o conjunto de alocação de memória inicial para uma Máquina Virtual Java (JVM), ao mesmo tempo Xmx que especifica o conjunto de alocação de memória máximo. Isto significa que o JVM será iniciado com Xms uma quantidade de memória e poderá utilizar um máximo de Xmx memória. Por predefinição, o serviço utiliza o mínimo de 64 MB e o máximo de 1G.

Dataset properties (Propriedades do conjunto de dados)

Para obter uma lista completa de secções e propriedades disponíveis para definir conjuntos de dados, veja o artigo Conjuntos de dados . Esta secção fornece uma lista de propriedades suportadas pelo conjunto de dados Parquet.

Propriedade Descrição Obrigatório
tipo A propriedade tipo do conjunto de dados tem de ser definida como Parquet. Yes
localização Definições de localização dos ficheiros. Cada conector baseado em ficheiros tem o seu próprio tipo de localização e propriedades suportadas em location. Veja os detalhes no artigo do conector -> Secção de propriedades do conjunto de dados. Yes
compressionCodec O codec de compressão a utilizar ao escrever em ficheiros Parquet. Ao ler a partir de ficheiros Parquet, as Fábricas de Dados determinam automaticamente o codec de compressão com base nos metadados do ficheiro.
Os tipos suportados são "none", "gzip", "snappy" (predefinição) e "lzo". Tenha em atenção que atualmente atividade Copy não suporta LZO ao ler/escrever ficheiros Parquet.
No

Nota

O espaço em branco no nome da coluna não é suportado para ficheiros Parquet.

Segue-se um exemplo do 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 Copy

Para obter uma lista completa de secções e propriedades disponíveis para definir atividades, consulte o artigo Pipelines . Esta secção fornece uma lista de propriedades suportadas pela origem parquet e sink.

Parquet como origem

As seguintes propriedades são suportadas na secção *origem* da atividade de cópia.

Propriedade Descrição Obrigatório
tipo A propriedade tipo da origem de atividade de cópia tem de ser definida como ParquetSource. Yes
storeSettings Um grupo de propriedades sobre como ler dados de um arquivo de dados. Cada conector baseado em ficheiros tem as suas próprias definições de leitura suportadas em storeSettings. Veja os detalhes no artigo do conector -> atividade Copy secção de propriedades. No

Parquet como sink

As seguintes propriedades são suportadas na secção *sink* da atividade de cópia.

Propriedade Descrição Obrigatório
tipo A propriedade tipo do sink de atividade de cópia tem de ser definida como ParquetSink. Yes
formatSettings Um grupo de propriedades. Veja a tabela de definições de escrita parquet abaixo. No
storeSettings Um grupo de propriedades sobre como escrever dados num arquivo de dados. Cada conector baseado em ficheiros tem as suas próprias definições de escrita suportadas em storeSettings. Veja os detalhes no artigo do conector -> atividade Copy secção de propriedades. No

Definições de escrita suportadas do Parquet em formatSettings:

Propriedade Descrição Obrigatório
tipo O tipo de formatSettings tem de ser definido como ParquetWriteSettings. Yes
maxRowsPerFile Ao escrever dados numa pasta, pode optar por escrever em múltiplos ficheiros e especificar o máximo de linhas por ficheiro. No
fileNamePrefix Aplicável quando maxRowsPerFile está configurado.
Especifique o prefixo de nome de ficheiro ao escrever dados em múltiplos ficheiros, o que resultou neste padrão: <fileNamePrefix>_00000.<fileExtension>. Se não for especificado, o prefixo de nome de ficheiro será gerado automaticamente. Esta propriedade não se aplica quando a origem é arquivo baseado em ficheiros ou arquivo de dados com opção de partição ativada.
No

Mapear propriedades do fluxo de dados

Nos fluxos de dados de mapeamento, pode ler e escrever no formato parquet nos seguintes arquivos de dados: Armazenamento de Blobs do Azure, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2 e SFTP e pode ler o formato parquet na Amazon S3.

Propriedades de origem

A tabela abaixo lista as propriedades suportadas por uma origem parquet. Pode editar estas propriedades no separador Opções de origem.

Nome Descrição Obrigatório Valores permitidos Propriedade script de fluxo de dados
Formato O formato tem de ser parquet sim parquet formato
Caminhos de wild card Todos os ficheiros que correspondam ao caminho do caráter universal serão processados. Substitui a pasta e o caminho do ficheiro definidos no conjunto de dados. não Cadeia[] wildcardPaths
Caminho de raiz da partição Para dados de ficheiros particionados, pode introduzir um caminho de raiz de partição para ler pastas particionadas como colunas não String partitionRootPath
Lista de ficheiros Se a sua origem está a apontar para um ficheiro de texto que lista ficheiros a processar não true ou false fileList
Coluna para armazenar o nome do ficheiro Criar uma nova coluna com o nome e o caminho do ficheiro de origem não String rowUrlColumn
Após a conclusão Eliminar ou mover os ficheiros após o processamento. O caminho do ficheiro começa a partir da raiz do contentor não Eliminar: true ou false
Mover: [<from>, <to>]
purgeFiles
moveFiles
Filtrar por última modificação Opte por filtrar ficheiros com base no momento em que foram alterados pela última vez não CarimboDeDataEHora modifiedAfter
modifiedBefore
Não permitir ficheiros encontrados Se for verdadeiro, não será apresentado um erro se não forem encontrados ficheiros não true ou false ignoreNoFilesFound

Exemplo de origem

A imagem abaixo é um exemplo de uma configuração de origem parquet nos fluxos de dados de mapeamento.

Origem parquet

O script de fluxo de dados associado é:

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

Propriedades do sink

A tabela abaixo lista as propriedades suportadas por um sink parquet. Pode editar estas propriedades no separador Definições .

Nome Descrição Obrigatório Valores permitidos Propriedade script de fluxo de dados
Formato O formato tem de ser parquet sim parquet formato
Limpar a pasta Se a pasta de destino for desmarcada antes de escrever não true ou false truncar
Opção nome de ficheiro O formato de nomenclatura dos dados escritos. Por predefinição, um ficheiro por partição no formato part-#####-tid-<guid> não Padrão: Cadeia
Por partição: Cadeia[]
Como dados na coluna: Cadeia
Saída para um único ficheiro: ['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames

Exemplo de sink

A imagem abaixo é um exemplo de uma configuração de sink parquet nos fluxos de dados de mapeamento.

Sink parquet

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 de tipo de dados

Os tipos de dados complexos 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 em fluxos de dados, não importe o esquema de ficheiros no conjunto de dados, deixando o esquema em branco no conjunto de dados. Em seguida, na transformação Origem, importe a projeção.

Passos seguintes