Formato ORC na Azure Data Factory

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Siga este artigo quando pretender analisar os ficheiros ORC ou escrever os dados no formato ORC.

O formato ORC é suportado para os seguintes conectores: Amazon S3, Amazon S3 Compatível Armazenamento, Azure Blob, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure File Storage Gen2 , Azure File Storage, File System, FTP, Google Cloud Storage, HDFS,HTTP Oracle, HTTPCloud Storage e SFTP.

Dataset properties (Propriedades do conjunto de dados)

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

Propriedade Descrição Obrigatório
tipo A propriedade do tipo do conjunto de dados deve ser definida para Orc. Yes
localização Definições de localização do(s) ficheiros. Cada conector baseado em ficheiros tem o seu próprio tipo de localização e propriedades suportadas em location . Consulte os detalhes na secção de propriedades do conector -> Dataset. Yes
compressãoCodec O codec de compressão para utilizar ao escrever em ficheiros ORC. Ao ler em ficheiros ORC, as Fábricas de Dados determinam automaticamente o código de compressão com base nos metadados de ficheiro.
Os tipos suportados não são nenhum, zlib, snappy (padrão) e lzo. Nota atualmente A atividade copy não suporta LZO quando lê/escreve ficheiros ORC.
No

Abaixo está um exemplo do conjunto de dados ORC no Armazenamento Azure Blob:

{
    "name": "OrcDataset",
    "properties": {
        "type": "Orc",
        "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",
            }
        }
    }
}

Tenha em atenção os seguintes pontos:

  • Os tipos de dados complexos (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 ficheiros no conjunto de dados, deixando o esquema em branco no conjunto de dados. Depois, na transformação da Fonte, importa a projeção.
  • O espaço branco no nome da coluna não é suportado.

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 fonte ORC e pia.

ORC como fonte

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

Propriedade Descrição Obrigatório
tipo A propriedade tipo da fonte de atividade de cópia deve ser definida para OrcSource. Yes
lojaSs Um grupo de propriedades sobre como ler dados de uma loja de dados. Cada conector baseado em ficheiros tem as suas próprias definições de leitura suportadas em storeSettings . Consulte os detalhes na secção de propriedades de atividade do conector -> Copy. No

ORC como pia

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

Propriedade Descrição Obrigatório
tipo A propriedade do tipo do lavatório de atividade de cópia deve ser definida para OrcSink. Yes
formatoStas Um grupo de propriedades. Consulte a tabela de definições de escrita ORC abaixo. No
lojaSs Um grupo de propriedades sobre como escrever dados para uma loja de dados. Cada conector baseado em ficheiros tem as suas próprias definições de escrita suportadas em storeSettings . Consulte os detalhes na secção de propriedades de atividade do conector -> Copy. No

As definições de escrita ORC suportadas em formatSettings :

Propriedade Descrição Obrigatório
tipo O tipo de formatoStas devem ser definidas para OrcWriteSettings. Yes
maxRowsPerFile Ao escrever dados numa pasta, pode optar por escrever em vários ficheiros e especificar as linhas máximas por ficheiro. No
fileNamePrefix Aplicável quando maxRowsPerFile é configurado.
Especifique o prefixo do nome do ficheiro ao escrever dados em vários ficheiros, resultando neste padrão: <fileNamePrefix>_00000.<fileExtension> . Se não for especificado, o prefixo do nome do ficheiro será gerado automaticamente. Esta propriedade não se aplica quando a fonte é loja baseada em ficheiros ou loja de dados ativada por opção de partição.
No

Mapeamento de propriedades de fluxo de dados

No mapeamento dos fluxos de dados, pode ler e escrever para o formato ORC nas seguintes lojas de dados: Azure Blob Storage, Azure Data Lake Storage Gen1e Azure Data Lake Storage Gen2.

Pode apontar para ficheiros ORC utilizando conjunto de dados ORC ou utilizando um conjunto de dados inline.

Propriedades de origem

A tabela abaixo lista as propriedades suportadas por uma fonte ORC. Pode editar estas propriedades no separador Opções Fonte.

Ao utilizar o conjunto de dados inline, verá definições de ficheiros adicionais, que são as mesmas que as propriedades descritas na secção de propriedades do conjunto de dados.

Nome Descrição Obrigatório Valores permitidos Propriedade de script de fluxo de dados
Formato Formato deve ser orc sim orc formato
Caminhos de wild card Todos os ficheiros correspondentes ao caminho wildcard serão processados. Substitui a pasta e o caminho do ficheiro definido no conjunto de dados. não Corda[] wildcardPaths
Caminho da raiz da partição Para os dados de ficheiros que são divididos, pode introduzir um caminho de raiz de partição para ler pastas partidas como colunas não String partitionRootPath
Lista de ficheiros Se a sua fonte está a apontar para um ficheiro de texto que lista ficheiros para processar não true ou false fileList
Coluna para armazenar nome de ficheiro Criar uma nova coluna com o nome e caminho do ficheiro de origem não String rowUrlColumn
Após a conclusão Elimine ou mova os ficheiros após o processamento. O caminho do arquivo começa a partir da raiz do recipiente não Excluir: true ou false
Mover-se: [<from>, <to>]
purgeFiles
moveFiles
Filtrar por última modificação Opte por filtrar ficheiros com base na última alteração que foram alterados não CarimboDeDataEHora modificado Depois
modificadoSForo antes
Não permita que não encontrem ficheiros Se for verdade, um erro não é jogado se nenhum ficheiro for encontrado não true ou false ignoreNoFilesFound

Exemplo de origem

O script de fluxo de dados associado de uma configuração de origem ORC é:

source(allowSchemaDrift: true,
    validateSchema: false,
    rowUrlColumn: 'fileName',
    format: 'orc') ~> OrcSource

Propriedades de pia

A tabela abaixo lista as propriedades suportadas por um lavatório ORC. Pode editar estas propriedades no separador Definições.

Ao utilizar o conjunto de dados inline, verá definições de ficheiros adicionais, que são as mesmas que as propriedades descritas na secção de propriedades do conjunto de dados.

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

Exemplo de pia

O script de fluxo de dados associado de uma configuração de pia ORC é:

OrcSource sink(
    format: 'orc',
    filePattern:'output[n].orc',
    truncate: true,
    allowSchemaDrift: true,
    validateSchema: false,
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> OrcSink

Utilização do tempo de execução de integração auto-hospedado

Importante

Para cópias habilitadas pelo Self-hosted Integration Runtime, por exemplo, entre as lojas de dados no local e na nuvem, se não estiver a copiar ficheiros ORC como-is, precisa de instalar o JRE 8 (Java Runtime Environment) de 64 bits ou o OpenJDK e o Microsoft Visual C++ 2010 Redistributable Package na sua máquina DE INFRA. Consulte o parágrafo seguinte com mais detalhes.

Para a cópia em execução em IR auto-hospedado com serialização/deserialização de ficheiros ORC, a ADF localiza o tempo de execução de Java, verificando 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 do sistema JAVA_HOME de verificação para OpenJDK.

  • Para utilizar o JRE: O IR de 64 bits requer JRE de 64 bits. Pode encontrá-lo daqui.
  • Para utilizar o OpenJDK: É suportado desde a versão IV 3.13. Embale o jvm.dll com todos os outros conjuntos necessários de OpenJDK na máquina de INFRAVERMELHO Auto-hospedada, e definir a variável do ambiente do sistema JAVA_HOME em conformidade.
  • Para instalar o Pacote Redistribuable Visual C++ 2010: O Pacote Redistribuable Visual C++ 2010 não está instalado com instalações de INFRA auto-hospedadas. Pode encontrá-lo daqui.

Dica

Se copiar dados de/para o formato ORC utilizando o tempo de execução de integração auto-hospedado e o erro de impacto dizendo "Ocorreu um erro ao invocar java, mensagem: java.lang.OutOfMemoryError:Java heap space", pode adicionar uma variável ambiental _JAVA_OPTIONS na máquina que hospeda o IR auto-hospedado para ajustar o tamanho da pilha min/max para JVM para capacitar tal cópia, em seguida, reenexcutar o pipeline.

Definir o tamanho da pilha JVM em IR auto-hospedado

Exemplo: definir variável _JAVA_OPTIONS com valor -Xms256m -Xmx16g . A bandeira Xms especifica o conjunto inicial de atribuição de memória para uma Máquina Virtual Java (JVM), enquanto Xmx especifica o conjunto máximo de atribuição de memória. Isto significa que jVM será iniciado com Xms quantidade de memória e será capaz de usar um máximo de quantidade de Xmx memória. Por predefinição, a ADF utiliza min 64 MB e máx 1G.

Passos seguintes