Condividi tramite


Partizionamento dell'output dei BLOB personalizzato in Analisi di flusso di Azure

Analisi di flusso di Azure supporta il partizionamento dell'output blob personalizzato con campi o attributi personalizzati e modelli di percorso personalizzati DateTime .

Campi o attributi personalizzati

Gli attributi o i campi personalizzati migliorano i flussi di lavoro di elaborazione e reporting downstream, consentendo un maggior controllo sull'output.

Opzioni per la chiave di partizione

La chiave di partizione, o il nome della colonna, usata per partizionare i dati di input possono contenere qualsiasi carattere accettato per i nomi BLOB. Non è possibile usare campi annidati come chiave di partizione, a meno che non vengano usati insieme agli alias. Tuttavia, è possibile usare determinati caratteri per creare una gerarchia di file. Ad esempio, per creare una colonna che combina i dati di due altre colonne per creare una chiave di partizione univoca, è possibile usare la query seguente:

SELECT name, id, CONCAT(name, "/", id) AS nameid

La chiave di partizione deve essere NVARCHAR(MAX), BIGINT, FLOATo BIT (livello di compatibilità 1.2 o superiore). I DateTimetipi , Arraye Records non sono supportati, ma possono essere usati come chiavi di partizione se vengono convertiti in stringhe. Per altre informazioni, vedere Tipi di dati di Analisi di flusso di Azure.

Esempio

Si supponga che un processo acquisisca i dati di input dalle sessioni utente live connesse a un servizio di videogiochi esterno in cui i dati inseriti contengono una colonna client_id per identificare le sessioni. Per partizionare i dati in client_idbase a , impostare il campo Modello percorso BLOB per includere un token {client_id} di partizione nelle proprietà di output blob quando si crea un processo. Man mano che i dati con vari client_id valori passano attraverso il processo di Analisi di flusso, i dati di output vengono salvati in cartelle separate in base a un singolo client_id valore per cartella.

Screenshot che mostra il modello Path con l'ID client.

Analogamente, se l'input del processo è costituito da dati del sensore provenienti da milioni di sensori in cui ogni sensore ha un sensor_id, il modello di percorso consiste {sensor_id} nel partizionare i dati di ogni sensore in cartelle diverse.

Quando si usa l'API REST, la sezione di output di un file JSON usato per tale richiesta potrebbe essere simile all'immagine seguente:

Screenshot che mostra l'output dell'API REST.

Dopo l'avvio dell'esecuzione del processo, il clients contenitore potrebbe essere simile all'immagine seguente:

Screenshot che mostra il contenitore client.

Ogni cartella può contenere più BLOB in cui ogni BLOB contiene uno o più record. Nell'esempio precedente è presente un singolo BLOB in una cartella con "06000000" etichetta con il contenuto seguente:

Screenshot che mostra il contenuto del BLOB.

Si noti che ogni record nel BLOB ha una client_id colonna corrispondente al nome della cartella perché la colonna usata per partizionare l'output nel percorso di output era client_id.

Limiti

  1. Nella proprietà di output del BLOB del modello di percorso è consentita una sola chiave di partizione personalizzata. Tutti i modelli di percorso seguenti sono validi:

    • cluster1/{date}/{aFieldInMyData}
    • cluster1/{time}/{aFieldInMyData}
    • cluster1/{aFieldInMyData}
    • cluster1/{date}/{time}/{aFieldInMyData}
  2. Se i clienti vogliono usare più campi di input, possono creare una chiave composita nella query per la partizione di percorso personalizzata nell'output BLOB usando CONCAT. Un esempio è select concat (col1, col2) as compositeColumn into blobOutput from input. Possono quindi specificare compositeColumn come percorso personalizzato in Archiviazione BLOB di Azure.

  3. Le chiavi di partizione non fanno distinzione tra maiuscole e minuscole, quindi le chiavi di partizione come John e john sono equivalenti. Inoltre, le espressioni non possono essere usate come chiavi di partizione. Ad esempio, {columnA + columnB} non funziona.

  4. Quando un flusso di input è costituito da record con cardinalità di chiave di partizione inferiore a 8.000, i record vengono aggiunti ai BLOB esistenti. Creano solo nuovi BLOB quando necessario. Se la cardinalità è superiore a 8.000, i BLOB esistenti non verranno scritti. I nuovi BLOB non verranno creati per un numero arbitrario di record con la stessa chiave di partizione.

  5. Se l'output del BLOB è configurato come non modificabile, Analisi di flusso crea un nuovo BLOB ogni volta che vengono inviati i dati.

Modelli di percorso di data/ora personalizzati

I modelli di percorso personalizzati DateTime consentono di specificare un formato di output allineato alle convenzioni di Streaming Hive, offrendo a Analisi di flusso la possibilità di inviare dati ad Azure HDInsight e Azure Databricks per l'elaborazione downstream. I modelli di percorso personalizzati DateTime vengono facilmente implementati usando la datetime parola chiave nel campo Prefisso percorso dell'output BLOB, insieme all'identificatore di formato. Un esempio è {datetime:yyyy}.

Token supportati

I token di identificatore di formato seguenti possono essere usati da soli o in combinazione per ottenere formati personalizzati DateTime .

Identificatore di formato Descrizione Risultati per l'ora di esempio 2018-01-02T10:06:08
{datetime:yyyy} Anno come numero di quattro cifre 2018
{datetime:MM} Mese da 01 a 12 01
{datetime:M} Mese da 1 a 12 1
{datetime:dd} Giorno da 01 a 31 02
{datetime:d} Giorno da 1 a 31 2
{datetime:HH} Ora in formato 24 ore, da 00 a 23 10
{datetime:mm} Minuti da 00 a 60 06
{datetime:m} Minuti da 0 a 60 6
{datetime:ss} Secondi da 00 a 60 08

Se non si vogliono usare modelli personalizzati DateTime , è possibile aggiungere e {date} /o {time} token al campo Prefisso percorso per generare un elenco a discesa con formati predefiniti DateTime .

Screenshot che mostra i vecchi formati DateTime di Analisi di flusso.

Estendibilità e restrizioni

È possibile usare tutti i token ({datetime:<specifier>}) desiderati nel modello di percorso fino a raggiungere il limite di caratteri del prefisso del percorso. Gli identificatori di formato non possono essere combinati all'interno di un singolo token oltre le combinazioni già presenti negli elenchi a discesa di data e ora.

Per una partizione di percorso logs/MM/dd:

Espressione valida Espressione non valida
logs/{datetime:MM}/{datetime:dd} logs/{datetime:MM/dd}

È possibile usare lo stesso identificatore di formato più volte nel prefisso del percorso. Il token deve essere ripetuto ogni volta.

Convenzioni Streaming Hive

I modelli di percorso personalizzati per l'archiviazione BLOB possono essere usati con la convenzione Di streaming Hive, che prevede che le cartelle vengano etichettate con column= nel nome della cartella.

Un esempio è year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}.

L'output personalizzato elimina i problemi di modifica delle tabelle e l'aggiunta manuale di partizioni ai dati delle porte tra Analisi di flusso e Hive. È invece possibile aggiungere automaticamente molte cartelle usando:

MSCK REPAIR TABLE while hive.exec.dynamic.partition true

Esempio

Creare un account di archiviazione, un gruppo di risorse, un processo di Analisi di flusso e un'origine di input in base all'avvio rapido di Analisi di flusso portale di Azure. Usare gli stessi dati di esempio usati nella guida introduttiva. I dati di esempio sono disponibili anche in GitHub.

Creare un sink di output BLOB con la configurazione seguente:

Screenshot che mostra il sink di output del BLOB creato da Analisi di flusso.

Il modello di percorso completo è:

year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}

Quando si avvia il processo, una struttura di cartelle basata sul modello di percorso viene creata nel contenitore BLOB. È possibile eseguire il drill down a livello di giorno.

Screenshot che mostra l'output del BLOB di Analisi di flusso con il modello di percorso personalizzato.