Condividi tramite


Apache Spark Advisor in Azure Synapse Analytics (anteprima)

Apache Spark Advisor analizza i comandi e il codice eseguiti da Spark e visualizza consigli in tempo reale per le esecuzioni dei notebook. Spark Advisor include modelli predefiniti che consentono agli utenti di evitare errori comuni, offrire raccomandazioni per l'ottimizzazione del codice, eseguire l'analisi degli errori e individuare la causa radice degli errori.

Consigli predefiniti

Può restituire risultati incoerenti quando si usa 'randomSplit'

È possibile che vengano restituiti risultati incoerenti o imprecisi quando si lavora con i risultati del metodo 'randomSplit'. Usare la memorizzazione nella cache di Apache Spark (RDD) prima di usare il metodo "randomSplit".

Il metodo randomSplit() equivale all'esecuzione di sample() nel frame di dati più volte, con ogni esempio che esegue recupero, partizionamento e ordinamento del frame di dati all'interno delle partizioni. La distribuzione dei dati tra partizioni e ordinamento è importante sia per randomSplit() che per sample(). Se si modifica il recupero dei dati, potrebbero essere presenti duplicati o valori mancanti tra divisioni e lo stesso esempio che usa lo stesso valore di inizializzazione può produrre risultati diversi.

Queste incoerenze potrebbero non verificarsi in ogni esecuzione, ma per eliminarle completamente, memorizzare nella cache il frame di dati, ripartizionare in una o più colonne o applicare funzioni di aggregazione come groupBy.

Il nome della visualizzazione/tabella è già in uso

Esiste già una vista con lo stesso nome della tabella creata oppure esiste già una tabella con lo stesso nome della vista creata. Quando questo nome viene usato nelle query o nelle applicazioni, solo la vista verrà restituita indipendentemente da quale venga creato per primo. Per evitare conflitti, rinominare la tabella o la vista.

Impossibile riconoscere un hint

La query selezionata contiene un hint non riconosciuto. Verificare che l'hint sia stato digitato correttamente.

spark.sql("SELECT /*+ unknownHint */ * FROM t1")

Impossibile trovare uno o più nomi di relazione specificati

Impossibile trovare le relazioni specificate nell'hint. Verificare che le relazioni siano digitate correttamente e accessibili nell'ambito dell'hint.

spark.sql("SELECT /*+ BROADCAST(unknownTable) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")

Un hint nella query impedisce l'applicazione di un altro hint

La query selezionata contiene un hint che impedisce l'applicazione di un altro hint.

spark.sql("SELECT /*+ BROADCAST(t1), MERGE(t1, t2) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")

Abilitare "spark.advise.divisionExprConvertRule.enable" per ridurre la propagazione degli errori di arrotondamento

Questa query contiene l'espressione con tipo Double. È consigliabile abilitare la configurazione "spark.recommend.divisionExprConvertRule.enable", che consente di ridurre le espressioni di divisione e di ridurre la propagazione degli errori di arrotondamento.

"t.a/t.b/t.c" convert into "t.a/(t.b * t.c)"

Abilitare "spark.advise.nonEqJoinConvertRule.enable" per migliorare le prestazioni delle query

Questa query contiene un join dispendioso in termini di tempo a causa della condizione "Or" all'interno della query. È consigliabile abilitare la configurazione "spark.recommend.nonEqJoinConvertRule.enable", che consente di convertire il join attivato dalla condizione "Or" in SMJ o BHJ per accelerare questa query.

Ottimizzare la tabella delta con compattazione di file di piccole dimensioni

Questa query si trova in una tabella delta con molti file di piccole dimensioni. Per migliorare le prestazioni delle query, eseguire il comando OPTIMIZE nella tabella delta. Altri dettagli sono disponibili in questo articolo.

Ottimizzare la tabella Delta con ZOrder

Questa query si trova in una tabella Delta e contiene un filtro altamente selettivo. Per migliorare le prestazioni delle query, eseguire il comando OPTIMIZE ZORDER BY nella tabella delta. Altri dettagli sono disponibili in questo articolo.

Esperienza utente

Apache Spark Advisor visualizza i consigli, incluse informazioni, avvisi ed errori, nell'output della cella del notebook in tempo reale.

  • Informazioni

    Screenshot showing for advice information.

  • Avviso

    Screenshot showing for advice warning.

  • Errori

    Screenshot showing for advice error.

Passaggi successivi

Per altre informazioni sul monitoraggio delle applicazioni Apache Spark, vedere l'articolo Monitorare le applicazioni Apache Spark con Synapse Studio.

Per altre informazioni sulla creazione di un notebook, vedere Come usare i notebook di Synapse