Formato Parquet in Azure Data Factory

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Seguire questo articolo quando si vogliono analizzare i file Parquet o scrivere i dati in formato Parquet.

Il formato Parquet è supportato per i connettori seguenti: Amazon S3, Amazon S3 Compatible Storage,BLOB di Azure, Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Archiviazione file di Azure, File System, FTP, Google Cloud Storage, HDFS, HTTP, Oracle Cloud Storage e SFTP.

Proprietà del set di dati

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione dei set di dati, vedere l'articolo Set di dati. Questa sezione fornisce un elenco delle proprietà supportate dal set di dati Parquet.

Proprietà Descrizione Obbligatoria
type La proprietà type del set di dati deve essere impostata su Parquet.
posizione Impostazioni del percorso dei file. Ogni connettore basato su file ha il proprio tipo di posizione e le proprietà supportate in location . Vedere i dettagli nell'articolo del connettore -> proprietà del set di dati.
compressionCodec Codec di compressione da usare per la scrittura in file Parquet. Durante la lettura da file Parquet, le data factory determinano automaticamente il codec di compressione in base ai metadati del file.
I tipi supportati sono "none", "gzip", "snappy" (impostazione predefinita) e "lzo". Si noti attività Copy attualmente non supporta LZO durante la lettura/scrittura di file Parquet.
No

Nota

Gli spazi vuoti nel nome della colonna non sono supportati per i file Parquet.

Di seguito è riportato un esempio di set di dati Parquet Archiviazione BLOB di 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"
        }
    }
}

Proprietà dell'attività di copia

Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline. Questa sezione fornisce un elenco delle proprietà supportate dall'origine e dal sink Parquet.

Parquet come origine

Nella sezione origine dell'attività di copia sono supportate * le proprietà * seguenti.

Proprietà Descrizione Obbligatoria
type La proprietà type dell'origine dell'attività di copia deve essere impostata su ParquetSource.
storeSettings Gruppo di proprietà su come leggere i dati da un archivio dati. Ogni connettore basato su file ha le proprie impostazioni di lettura supportate in storeSettings . Vedere i dettagli nell'articolo del connettore -> attività Copy properties. No

Parquet come sink

Le proprietà seguenti sono supportate nella sezione sink dell'attività * di * copia.

Proprietà Descrizione Obbligatoria
type La proprietà type del sink dell'attività di copia deve essere impostata su ParquetSink.
formatSettings Gruppo di proprietà. Fare riferimento alla tabella delle impostazioni di scrittura Parquet riportata di seguito. No
storeSettings Gruppo di proprietà su come scrivere dati in un archivio dati. Ogni connettore basato su file ha le proprie impostazioni di scrittura supportate in storeSettings . Vedere i dettagli nell'articolo del connettore -> attività Copy properties. No

Impostazioni di scrittura Parquet supportate in formatSettings :

Proprietà Descrizione Obbligatoria
type Il tipo di formatSettings deve essere impostato su ParquetWriteSettings.
maxRowsPerFile Quando si scrivono dati in una cartella, è possibile scegliere di scrivere in più file e specificare il numero massimo di righe per file. No
fileNamePrefix Applicabile quando maxRowsPerFile è configurato.
Specificare il prefisso del nome file quando si scrivono dati in più file, con il risultato di questo modello: <fileNamePrefix>_00000.<fileExtension> . Se non specificato, il prefisso del nome file verrà generato automaticamente. Questa proprietà non si applica quando l'origine è un archivio basato su file o un archivio dati abilitato per le opzioni di partizione.
No

Proprietà del flusso di dati per mapping

Nei flussi di dati di mapping è possibile leggere e scrivere in formato parquet negli archivi dati seguenti: Archiviazione BLOB di Azure, Azure Data Lake Storage Gen1e Azure Data Lake Storage Gen2.

Proprietà di origine

La tabella seguente elenca le proprietà supportate da un'origine parquet. È possibile modificare queste proprietà nella scheda Opzioni di origine.

Nome Descrizione Obbligatoria Valori consentiti Proprietà dello script del flusso di dati
Formato Il formato deve essere parquet parquet format
Percorsi con caratteri jolly Verranno elaborati tutti i file che corrispondono al percorso con caratteri jolly. Esegue l'override della cartella e del percorso del file impostati nel set di dati. No String[] wildcardPaths
Partition Root Path (Percorso radice partizione) Per i dati di file partizionati, è possibile immettere un percorso radice della partizione per leggere le cartelle partizionate come colonne No Stringa partitionRootPath
Elenco di file Indica se l'origine punta a un file di testo che elenca i file da elaborare No true o false Filelist
Colonna in cui archiviare il nome file Creare una nuova colonna con il nome e il percorso del file di origine No Stringa rowUrlColumn
Dopo il completamento Eliminare o spostare i file dopo l'elaborazione. Il percorso del file inizia dalla radice del contenitore No Elimina: true o false
Sposta: [<from>, <to>]
purgeFiles
moveFiles
Filtra in base all'ultima modifica Scegliere di filtrare i file in base all'ultima modifica No Timestamp modifiedAfter
modifiedBefore
Non consentire file trovati Se true, non viene generato un errore se non viene trovato alcun file No true o false ignoreNoFilesFound

Esempio di origine

L'immagine seguente è un esempio di configurazione dell'origine parquet nei flussi di dati di mapping.

Origine Parquet

Lo script del flusso di dati associato è:

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

Proprietà sink

La tabella seguente elenca le proprietà supportate da un sink parquet. È possibile modificare queste proprietà nella scheda Impostazioni.

Nome Descrizione Obbligatoria Valori consentiti Proprietà script del flusso di dati
Formato Il formato deve essere parquet parquet format
Cancellare la cartella Se la cartella di destinazione viene cancellata prima della scrittura No true o false truncate
Opzione nome file Formato di denominazione dei dati scritti. Per impostazione predefinita, un file per partizione nel formato part-#####-tid-<guid> No Pattern: String
Per partizione: String[]
Come dati nella colonna: String
Output in un singolo file: ['<fileName>']
filePattern
partitionFileNames
rowUrlColumn
partitionFileNames

Esempio di sink

L'immagine seguente è un esempio di configurazione di sink Parquet nei flussi di dati di mapping.

Sink Parquet

Lo script del flusso di dati associato è:

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

Supporto dei tipi di dati

I tipi di dati complessi Parquet (ad esempio MAP, LIST, STRUCT) sono attualmente supportati solo nei flussi di dati, non nell'attività di copia. Per usare tipi complessi nei flussi di dati, non importare lo schema del file nel set di dati, lasciando lo schema vuoto nel set di dati. Quindi, nella trasformazione Origine importare la proiezione.

Uso di applicazioni self-hosted Integration Runtime

Importante

Per la copia ottimizzata da un Integration Runtime self-hosted, ad esempio tra archivi dati locali e cloud, se non si copiano file Parquet così come sono, è necessario installare JRE 8 (Java Runtime Environment) o OpenJDK e Microsoft Visual C++ 2010 Redistributable Package nel computer AR. Controllare il paragrafo seguente con altri dettagli.

Per la copia in esecuzione in runtime di runtime self-hosted con serializzazione/deserializzazione di file Parquet, ADF individua il runtime Java controllando innanzitutto la presenza di JRE nel Registro di sistema, se non viene trovato, verificando in secondo luogo la variabile di sistema (SOFTWARE\JavaSoft\Java Runtime Environment\{Current Version}\JavaHome) JAVA_HOME per OpenJDK.

  • Per usare JRE: l'IR a 64 bit richiede JRE a 64 bit. disponibile qui.
  • Per usare OpenJDK: è supportato dalla versione IR 3.13. Includere jvm.dll in un pacchetto con tutti gli altri assembly necessari di OpenJDK nel computer del runtime di integrazione self-hosted e impostare di conseguenza la variabile di ambiente di sistema JAVA_HOME.
  • Per installare Visual C++ 2010 Redistributable Package: Visual C++ 2010 Redistributable Package non viene installato con installazioni di runtime self-hosted. disponibile qui.

Suggerimento

Se si copiano i dati nel/dal formato Parquet usando il runtime di integrazione self-hosted e si verifica l'errore "An error occurred when invoking java, message: java.lang.OutOfMemoryError:Java heap space" (Errore durante la chiamata di Java, messaggio: java.lang.OutOfMemoryError: spazio dell'heap di Java), è possibile aggiungere una variabile di ambiente _JAVA_OPTIONS nel computer che ospita il runtime di integrazione self-hosted per regolare le dimensioni min/max dell'heap per JVM e poter ottimizzare la copia, quindi eseguire di nuovo la pipeline.

Impostare le dimensioni dell'heap JVM nel runtime di integrazione self-hosted

Esempio: impostare la variabile _JAVA_OPTIONS con il valore -Xms256m -Xmx16g. Il flag Xms specifica il pool di allocazione della memoria iniziale per Java Virtual Machine (JVM), mentre Xmx specifica il pool di allocazione della memoria massima. JVM verrà quindi avviato con una quantità di memoria pari a Xms e potrà usare una quantità massima di memoria pari a Xmx. Per impostazione predefinita, ADF usa min 64 MB e max 1G.

Passaggi successivi