Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure Stream Analytics offre supporto per il partizionamento personalizzato dell'output blob con campi, attributi 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 base a client_id, configurare il campo Modello percorso BLOB per includere un token {client_id} di partizione nelle proprietà di output BLOB quando si crea un processo di lavoro. 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.
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:
Dopo l'avvio dell'esecuzione del processo, il clients contenitore potrebbe essere simile all'immagine seguente:
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 etichettata "06000000": con il contenuto seguente.
Si noti che ogni record del 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
Nella proprietà di output del modello di percorso BLOB è 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}
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 specificarecompositeColumncome percorso personalizzato in Archiviazione BLOB di Azure.Le chiavi di partizione non fanno distinzione tra maiuscole e minuscole, quindi le chiavi di partizione come
Johnejohnsono equivalenti. Inoltre, le espressioni non possono essere usate come chiavi di partizione. Ad esempio,{columnA + columnB}non funziona.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, non c'è garanzia che i BLOB esistenti verranno scritti. I nuovi BLOB non verranno creati per un numero arbitrario di record con la stessa chiave di partizione.
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 DateTime personalizzati possono essere implementati facilmente usando la parola chiave datetime nel campo Prefisso percorso di output BLOB, con l'identificatore del 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 il token {date} e/o {time} al campo Prefisso Percorso per generare un elenco a discesa con formati integrati DateTime.
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 derivanti dalla modifica delle tabelle e dall'aggiunta manuale di partizioni per trasferire i dati tra Stream Analytics 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 Creare un processo di Analisi di flusso usando il portale di Azure. Usare gli stessi dati di esempio usati nell'avvio rapido. I dati di esempio sono disponibili anche in GitHub.
Creare un sink di output BLOB con la configurazione seguente:
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 approfondire fino al livello giornaliero.