Formato ORC no Azure Data Factory e Synapse Analytics
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Gorjeta
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!
Siga este artigo quando quiser analisar os arquivos ORC ou gravar os dados no formato ORC.
O formato ORC é compatível com os seguintes conectores: Amazon S3, Amazon S3 Compatible Storage, Azure Blob, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure Files, File System, FTP, Google Cloud Storage, HDFS, HTTP, Oracle Cloud Storage e SFTP.
Propriedades do conjunto de dados
Para obter uma lista completa de seções e propriedades disponíveis para definir conjuntos de dados, consulte o artigo Conjuntos de dados. Esta seção fornece uma lista de propriedades suportadas pelo conjunto de dados ORC.
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type do conjunto de dados deve ser definida como Orc. | Sim |
localização | Configurações de localização do(s) arquivo(s). Cada conector baseado em arquivo tem seu próprio tipo de local e propriedades suportadas em location . Consulte os detalhes no artigo do conector -> seção Propriedades do conjunto de dados. |
Sim |
compressãoCodec | O codec de compressão a ser usado ao gravar em arquivos ORC. Ao ler arquivos ORC, o Data Factories determina automaticamente o codec de compactação com base nos metadados do arquivo. Os tipos suportados são none, zlib, snappy (padrão) e lzo. Observação atualmente A atividade de cópia não suporta LZO quando arquivos ORC de leitura/gravação. |
Não |
Abaixo está um exemplo de conjunto de dados ORC no Armazenamento de Blob do Azure:
{
"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 conta os seguintes pontos:
- Tipos de dados complexos (por exemplo, MAP, LIST, STRUCT) são atualmente suportados apenas em Fluxos de Dados, não em Atividade de Cópia. 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 dados. Em seguida, na transformação Source, importe a projeção.
- Não há suporte para espaço em branco no nome da coluna.
Propriedades da atividade Copy
Para obter uma lista completa de seções e propriedades disponíveis para definir atividades, consulte o artigo Pipelines . Esta seção fornece uma lista de propriedades suportadas pela origem e pelo coletor ORC.
ORC como fonte
As propriedades a seguir são suportadas na seção copy activity *source* .
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type da fonte de atividade de cópia deve ser definida como OrcSource. | 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 suportadas em storeSettings . Veja os detalhes no artigo do conector -> Seção Copiar propriedades da atividade. |
Não |
ORC como pia
As propriedades a seguir são suportadas na seção de atividade de cópia *sink* .
Property | Descrição | Obrigatório |
---|---|---|
tipo | A propriedade type do coletor de atividade de cópia deve ser definida como OrcSink. | Sim |
formatConfigurações | Um grupo de propriedades. Consulte a tabela de configurações de gravação ORC 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 suportadas em storeSettings . Veja os detalhes no artigo do conector -> Seção Copiar propriedades da atividade. |
Não |
Configurações de gravação ORC suportadas emformatSettings
:
Property | Descrição | Obrigatório |
---|---|---|
tipo | O tipo de formatSettings deve ser definido como OrcWriteSettings. | 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 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 do nome do arquivo será gerado automaticamente. Essa propriedade não se aplica quando a origem é armazenamento baseado em arquivo ou armazenamento de dados habilitado para opção de partição. |
Não |
Mapeando propriedades de fluxo de dados
No mapeamento de fluxos de dados, você pode ler e gravar no formato ORC nos seguintes armazenamentos de dados: Armazenamento de Blob do Azure, Armazenamento do Azure Data Lake Gen1, Armazenamento do Azure Data Lake Gen2 e SFTP, e pode ler o formato ORC no Amazon S3.
Você pode apontar para arquivos ORC usando o conjunto de dados ORC ou usando um conjunto de dados embutido.
Propriedades de origem
A tabela abaixo lista as propriedades suportadas por uma fonte ORC. Você pode editar essas propriedades na guia Opções de origem .
Ao usar o conjunto de dados embutido, você verá configurações de arquivo adicionais, que são as mesmas que as propriedades descritas na seção de propriedades do conjunto de dados.
Nome | Descrição | Obrigatório | Valores permitidos | Propriedade do script de fluxo de dados |
---|---|---|---|---|
Formato | O formato deve ser orc |
sim | orc |
format |
Caminhos curinga | Todos os arquivos correspondentes ao caminho curinga serão processados. Substitui a pasta e o caminho do arquivo definidos no conjunto de dados. | não | String[] | wildcardCaminhos |
Caminho da raiz da partição | Para dados de arquivo particionados, você pode inserir um caminho raiz de partição para ler pastas particionadas como colunas | não | String | partitionRootPath |
Lista de arquivos | Se sua fonte está apontando para um arquivo de texto que lista os arquivos a serem processados | não | true ou false |
Lista de arquivos |
Coluna para armazenar o nome do arquivo | Criar uma nova coluna com o nome do arquivo de origem e o caminho | não | String | rowUrlColumn |
Após a conclusão | Exclua ou mova os arquivos após o processamento. O caminho do arquivo começa a partir da raiz do contêiner | não | Eliminar: true ou false Movimentar-se: [<from>, <to>] |
purgeFiles moveFiles |
Filtrar por última modificação | Opte por filtrar ficheiros com base na data em que foram alterados pela última vez | não | Carimbo de Data/Hora | modificadoApós modificadoAntes |
Não permitir que nenhum arquivo seja encontrado | Se verdadeiro, um erro não é lançado se nenhum arquivo for encontrado | não | true ou false |
ignoreNoFilesFound |
Exemplo de fonte
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 do lavatório
A tabela abaixo lista as propriedades suportadas por um coletor ORC. Você pode editar essas propriedades na guia Configurações .
Ao usar o conjunto de dados embutido, você verá configurações de arquivo adicionais, que são as mesmas que as propriedades descritas na seção de propriedades do conjunto de dados.
Nome | Descrição | Obrigatório | Valores permitidos | Propriedade do script de fluxo de dados |
---|---|---|---|---|
Formato | O formato deve ser orc |
sim | orc |
format |
Limpar a pasta | Se a pasta de destino for limpa antes da gravação | não | true ou false |
truncate |
Opção de nome de 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: String Por partição: String[] Como dados na coluna: String Saída para um único arquivo: ['<fileName>'] |
filePattern partitionFileNames rowUrlColumn partitionFileNames |
Exemplo de lavatório
O script de fluxo de dados associado de uma configuração de coletor ORC é:
OrcSource sink(
format: 'orc',
filePattern:'output[n].orc',
truncate: true,
allowSchemaDrift: true,
validateSchema: false,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> OrcSink
Usando o Self-hosted Integration Runtime
Importante
Para cópia habilitada pelo Self-hosted Integration Runtime, por exemplo, entre armazenamentos de dados locais e na nuvem, se você não estiver copiando arquivos ORC como estão, precisará instalar o JRE 8 de 64 bits (Java Runtime Environment) ou OpenJDK e Microsoft Visual C++ 2010 Redistributable Package em sua máquina IR. Confira o parágrafo a seguir com mais detalhes.
Para cópia executada em IR auto-hospedado com serialização/desserialização de arquivo ORC, o serviço localiza o tempo de execução Java verificando primeiro o registro (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome)
para JRE, se não for encontrado, em segundo lugar verificando a variável JAVA_HOME
de sistema para OpenJDK.
- Para usar o JRE: O IR de 64 bits requer o JRE de 64 bits. Você pode encontrá-lo aqui.
- Para usar o OpenJDK: É suportado desde a versão 3.13 do IR. Empacote o jvm.dll com todos os outros assemblies necessários do OpenJDK na máquina IR auto-hospedada e defina a variável de ambiente do sistema JAVA_HOME de acordo.
- Para instalar o Visual C++ 2010 Redistributable Package: Visual C++ 2010 Redistributable Package não é instalado com instalações IR auto-hospedadas. Você pode encontrá-lo aqui.
Gorjeta
Se você copiar dados de/para o formato ORC usando o Self-hosted Integration Runtime e clicar no erro dizendo "Ocorreu um erro ao invocar java, message: java.lang.OutOfMemoryError:Java heap space", você pode adicionar uma variável _JAVA_OPTIONS
de ambiente na máquina que hospeda o IR auto-hospedado para ajustar o tamanho de heap min/max para a JVM para habilitar essa cópia e, em seguida, executar novamente o pipeline.
Exemplo: definir variável _JAVA_OPTIONS
com valor -Xms256m -Xmx16g
. O sinalizador Xms
especifica o pool de alocação de memória inicial para uma Java Virtual Machine (JVM), enquanto Xmx
especifica o pool máximo de alocação de memória. Isso significa que a JVM será iniciada com Xms
quantidade de memória e poderá usar um máximo de Xmx
quantidade de memória. Por padrão, o serviço usa min 64 MB e max 1G.