View a markdown version of this page

Informazioni sui log oscurati - AWS Clean Rooms

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Informazioni sui log oscurati

AWS Clean Rooms oscura i log di Spark prima di esportarli in modo che i log esportati non rivelino il contenuto dei dati di un membro o identifichino la tabella e le posizioni di archiviazione dei dati di origine. AWS Clean Rooms ricostruisce i record di log ed emette solo i campi noti per essere sicuri da condividere. Alcune informazioni vengono conservate deliberatamente, inclusi i nomi delle colonne lette da una query.

La redazione non fa distinzioni tra i membri. Aspettati che i nomi delle tue tabelle e i valori delle tue query vengano cancellati dai log che esporti per le tue query, alle stesse condizioni delle informazioni di un altro membro. I campi vuoti e segnaposto sono normali e non indicano problemi con l'esportazione.

Cosa contengono i log esportati

I log esportati conservano le informazioni necessarie per diagnosticare guasti e problemi di prestazioni:

  • Tempi: la durata delle attività e delle fasi, il tempo di esecuzione, il tempo della CPU, il tempo di raccolta dei dati inutili, il tempo di deserializzazione e serializzazione dei risultati, il tempo di attesa casuale e il tempo di scrittura casuale vengono tutti preservati esattamente. I tempi sono il segnale principale per l'analisi delle prestazioni.

  • Identificatori e conteggi delle esecuzioni di Spark: ID di processo, fase, attività e tentativo, conteggio delle partizioni, conteggi delle attività, ID degli esecutori, nomi host e porte.

  • Struttura del piano di query: l'albero fisico del piano, inclusi i nomi degli operatori comeHashAggregate, e SortMergeJoinExchange, in modo da poter vedere la forma del piano e il modo in cui il motore ha scelto di eseguire la query. Il nome di un operatore che non appartiene a Spark viene visualizzato come[REDACTED].

  • Nomi delle colonne di origine: nomi di colonne che provengono da una tabella sottoposta a scansione, in modo da poter vedere quali colonne vengono utilizzate nei filtri, nei join e nelle aggregazioni. I nomi creati da una query, ad esempio un alias, non vengono conservati. Per ulteriori informazioni, consulta Come vengono trattati i nomi delle colonne e delle tabelle.

  • Tipo di scansione e formato del file: un operatore di scansione in genere include il nome della tabella da leggere. Il nome viene sostituito da un modulo che identifica solo il tipo di scansione e il formato del file, ad esempioScan parquet, in modo da poter comunque sapere come vengono letti i dati. Se il formato del file non è AWS Clean Rooms riconoscibile, l'operatore appare come privo Scan di formato.

  • Classi di errore: quando una query ha esito negativo, i log identificano il tipo di errore ma non i dati che lo hanno causato. Riportano la classe di errore di Spark, il relativo codice SQLSTATE e il messaggio standard che Spark definisce per quella classe, con i <placeholder> token del messaggio lasciati vuoti, perché i valori che li riempirebbero provengono dai dati. Un cast fallito, ad esempio, riporta [CAST_INVALID_INPUT] e un messaggio che descrive che un valore di un tipo non può essere trasmesso a un altro, senza mostrare il valore. Quando un errore ne causa un altro, le classi di errore della catena vengono segnalate insieme, fino a pochi livelli di profondità. Un errore che non ha avuto origine in Spark viene segnalato solo come errore non Spark, senza classe.

    Gli errori delle singole attività segnalano solo il tipo di errore, ad esempio. ExceptionFailure Non hanno una classe di errore propria.

  • Configurazione Spark: impostazioni i cui valori sono sempre numeri, dimensioni o parole chiave fisse e che sono più spesso necessarie per diagnosticare un problema di prestazioni: core e memoria di driver ed executor, frazioni di memoria e impostazioni off-heap, impostazioni di allocazione dinamica, impostazioni di esecuzione adattiva delle query, parallelismo predefinito e numero di partizioni shuffle, soglia di join della trasmissione, dimensione massima della partizione, impostazioni di compressione shuffle, modalità scheduler e serializzatore. La maggior parte delle altre configurazioni è oscurata, poiché le impostazioni possono contenere percorsi, identificatori e testo di interrogazione. Una di queste impostazioni viene omessa anche se il suo valore non è un semplice numero, dimensione o parola chiave.

  • Utilizzo della memoria e volumi di dati: memoria di picco di esecuzione, perdita di memoria e disco, memoria JVM dell'esecutore, dimensioni dei dati memorizzati nella cache, conteggio dei blocchi shuffle e numero di byte e record letti e scritti, inclusi i volumi di lettura e scrittura shuffle. Queste cifre sono arrotondate per difetto anziché esatte. Per ulteriori informazioni, consulta In che modo i log oscurati differiscono dai log standard di Spark.

  • Perché un esecutore si è fermato: una categoria per ogni esecutore che si è fermato, ad esempio esaurimento della memoria, arresto da parte del conducente, disattivazione o mancata risposta. Questo è spesso il modo più rapido per spiegare perché una query non è riuscita. I log registrano anche qualsiasi esecutore o host su cui Spark ha interrotto la pianificazione del lavoro, il che è utile quando gli errori continuano a ripetersi in un unico posto. Per ulteriori informazioni, consulta In che modo i log oscurati differiscono dai log standard di Spark.

  • Dettagli sugli errori di recupero casuale: quando un'attività non riesce a recuperare l'output shuffle, gli identificatori shuffle, map, map index e reduce vengono conservati, insieme all'esecutore e all'host su cui è stato tentato il recupero. Ciò consente di distinguere gli errori ripetuti relativi a un'unica fonte, che in genere indicano un esecutore che non risponde, dai guasti diffusi su più fonti, che di solito indicano problemi di rete transitori.

Cosa viene oscurato

  • Valori dei dati: valori letterali della tua query e valori di dati di qualsiasi tabella. Un predicato di filtro mostra quale colonna è stata filtrata ma non il valore con cui è stata confrontata.

  • Nomi delle tabelle e posizioni di archiviazione: identificatori di tabella, nomi di database e percorsi Amazon S3.

  • Testo della query: l'istruzione SQL e qualsiasi descrizione associata alla query.

  • Testo del messaggio di errore e tracce dello stack: poiché un messaggio di errore può citare il valore che ha causato l'errore, il testo del messaggio e le tracce dello stack vengono rimossi. Anche il nome della classe di eccezione sottostante viene oscurato, poiché un'eccezione generata da una funzione definita dall'utente ha un nome scelto dall'autore della query. La classe di errore Spark viene invece conservata, per la query e il lavoro. Vengono inoltre oscurati il motivo per cui una fase è fallita e il motivo per cui un'attività è stata interrotta.

  • Nomi che Spark registra per il proprio lavoro: i nomi e i siti di chiamata degli stage e dei set di dati memorizzati nella cache e il nome dell'applicazione. Si tratta di campi di testo libero che possono riecheggiare il nome di una tabella o un percorso di archiviazione. In Spark History Server, le fasi vengono quindi visualizzate senza le descrizioni che normalmente le identificherebbero e si individua una fase in base al suo ID e alla sua posizione nel piano.

  • Nomi di colonna calcolati e con alias: nomi creati da una query anziché leggere da una tabella, poiché il motore di query genera tale nome dall'espressione e il nome può contenere un valore. Questi vengono visualizzati come identificatori numerici, ad esempio. #42 Per ulteriori informazioni, consulta Come vengono trattati i nomi delle colonne e delle tabelle.

  • Dettagli della scansione: lo schema di lettura, i predicati di filtro applicati a ogni scansione (filtri premuti verso il basso, filtri di partizione e filtri di dati) e la posizione dei dati.

  • Collegamenti ai registri dei driver e degli esecutori: gli URL dei log che Spark registra per ciascun esecutore e per il driver. In Spark History Server, i link che normalmente aprirebbero un driver o un log dell'esecutore non vengono popolati.

  • Identificatori di risorse ed endpoint di servizio: ID AWS account, ARN come quelli dei ruoli e delle AWS KMS chiavi IAM e gli URL degli endpoint dei servizi che chiamano per eseguire la query. AWS Clean Rooms

  • AWS dettagli del servizio: nomi delle classi, voci del percorso di AWS Clean Rooms classe, configurazione JVM e proprietà di sistema e Hadoop. Anche le proprietà dei job vengono cancellate, ad eccezione degli identificatori necessari a Spark History Server per associare i lavori all'esecuzione delle query a cui appartengono.

Come vengono trattati i nomi delle colonne e delle tabelle

I log esportati mantengono i nomi delle colonne lette da una query. I nomi delle tabelle e gli alias di colonna creati nella query vengono oscurati. Un nome creato da una query viene generato dall'espressione che nomina e tale nome generato può contenere un valore della query: SELECT 'confidential' produce una colonna denominata. confidential Un nome appare quindi solo quando può essere ricondotto a una colonna di una tabella scansionata. Ogni altro nome viene sostituito da un identificatore numerico.

Ad esempio, considera la seguente query.

SELECT user_id, SUM(amount) AS total FROM sales WHERE region = 'us-west' GROUP BY user_id

I log esportati lo rappresentano come segue.

Elemento dell'interrogazione Nei log esportati
Le colonne user_idamount, e region Presentale per nome, in modo da poter vedere in base a cosa è stata raggruppata, sommata e filtrata la query
La tabellasales, il relativo database e la relativa posizione di archiviazione Non presente
Il valore 'us-west' Sostituito con [REDACTED]
L'alias total Sostituito con un identificatore numerico, perché la query ha creato il nome anziché leggerlo da una tabella

In che modo i log oscurati differiscono dai log standard di Spark

Il conteggio delle righe e i volumi di dati sono approssimativi

I conteggi dei record, i volumi di byte, le dimensioni delle perdite e le misurazioni dei picchi di memoria vengono arrotondati per difetto a un ordine di grandezza, poiché un conteggio esatto può rivelare la dimensione dei dati di un altro membro. Un'attività che legge 1.342 record ne riporta 1.000. Le misurazioni inferiori a 100 riportano come 0.

Poiché ogni cifra è arrotondata per difetto, un'attività che riporta 100 e un'attività che riporta 1.000 potrebbero aver letto quasi lo stesso numero di record. Considerate con cautela le cifre che differiscono solo di un ordine di grandezza; differenze maggiori, ad esempio 1.000 contro 10.000.000, indicano comunque in modo affidabile una distorsione.

I valori oscurati assumono più di una forma

Nel piano di interrogazione, un valore oscurato viene visualizzato come testo letterale. [REDACTED] Altrove nei log, un campo oscurato di solito è invece vuoto. Potrebbe essere una stringa vuota, un elenco vuoto o un valore completamente assente, in modo che Spark History Server possa ancora leggere il record. Entrambe le forme hanno lo stesso significato.

I piani di interrogazione non utilizzano una sintassi operativa familiare

Le espressioni nel piano vengono scritte come chiamate di funzione anziché in notazione matematica. Un confronto viene visualizzato come EqualTo(#12, [REDACTED]) anziché come. (a = 5) Anche i nomi delle funzioni vengono visualizzati in questo modulo e i nomi delle funzioni definiti dall'utente non vengono visualizzati affatto.

È incluso solo il piano fisico

I log esportati contengono il piano fisico. Non contengono i piani logici analizzati, analizzati o ottimizzati che normalmente li accompagnano.

Per-task le metriche vengono cancellate

Il grafico del piano elenca le metriche riportate da ciascun operatore, ad esempio il numero di righe di output. Le metriche riportate dalle singole attività non mostrano alcun valore, poiché le cifre relative alle singole attività vengono rimosse. Per i numeri a livello di attività, utilizza invece le metriche relative alle singole attività nella visualizzazione delle fasi.

Le metriche dei driver Spark sono arrotondate per difetto

Le metriche che Spark calcola sul driver, comprese quelle per trasmissioni, scansioni e scritture, riportano un valore, ma vengono arrotondate per difetto a un ordine di grandezza per lo stesso motivo per cui lo sono il numero di record e i volumi di dati: una cifra esatta può rivelare la dimensione dei dati di un altro membro.

Viene esportato solo il registro degli eventi

L'esportazione contiene il registro degli eventi di Spark. Non contiene l'output in formato libero del driver e dell'esecutore che Spark scrive insieme ad esso, perché una singola riga di tale output può contenere un nome di tabella, un percorso di archiviazione o un valore di dati. La diagnosi deve essere effettuata dal registro degli eventi.

Gli errori dell'esecutore mostrano messaggi di errore generici

Poiché il motivo in forma libera per cui un esecutore si è fermato può contenere dettagli sul AWS Clean Rooms servizio, i log riportano invece un messaggio di errore generico, ad esempio un'uscita dalla memoria insufficiente, un arresto avviato dal driver, un esecutore disattivato o un processo perso. Questo record è specifico AWS Clean Rooms e non è un evento Spark standard, quindi Spark History Server e altri strumenti potrebbero non visualizzarlo. Se non lo vedi, puoi trovarlo nel file di registro degli eventi esportato.

I record non riconosciuti vengono oscurati per impostazione predefinita

Se un record di registro non è AWS Clean Rooms riconosciuto, tutto il testo viene sostituito con[REDACTED], inclusi i nomi dei campi, e tutti i numeri vengono sostituiti con zero. Viene mantenuto solo il tipo di record. Tale registrazione non contiene informazioni diagnostiche.