2015-08-20 6 views
5

Spark SQL include un'ottimizzazione dello streaming della tabella per i join e, in caso affermativo, come decide quale tabella eseguire lo streaming?Spark SQL include un'ottimizzazione dello streaming della tabella per i join?

Durante l'unione, Hive presuppone che l'ultima tabella sia la più grande. Come ottimizzazione del join, tenterà di bufferizzare le tabelle di join più piccole e trasmettere l'ultima. Se l'ultima tabella nell'elenco di join non è la più grande, Hive ha l'hint /*+ STREAMTABLE(tbl) */ che indica la tabella che deve essere trasmessa in streaming. A partire dalla v1.4.1, Spark SQL non supporta l'hint STREAMTABLE.

Questa domanda è stata richiesta per l'elaborazione RDD normale, al di fuori di Spark SQL, here. La risposta non si applica a Spark SQL in cui lo sviluppatore non ha il controllo delle operazioni esplicite della cache.

risposta

3

Ho cercato una risposta a questa domanda un po 'di tempo fa e tutto quello che potevo inventare era impostare un parametro spark.sql.autoBroadcastJoinThreshold, che è di default 10 MB. Quindi tenterà di trasmettere automaticamente tutte le tabelle con dimensioni inferiori al limite impostato dall'utente. L'ordine di iscrizione non ha alcun ruolo qui per questa impostazione.

Se si è interessati a migliorare ulteriormente le prestazioni del join, consiglio vivamente this presentation.

1

Questo è l'imminente Spark 2.3 qui (RC2 è messa al voto per il prossimo rilascio).

A partire dalla v1.4.1, Spark SQL non supporta l'hint STREAMTABLE.

Non è l'ultimo (e ha votato per essere rilasciato presto) Spark 2.3 sia.

Non c'è supporto per il suggerimento STREAMTABLE, ma data la recente modifica (in SPARK-20857 Generic resolved hint node) per creare un framework di suggerimento che dovrebbe essere abbastanza facile da scrivere.

Dovresti scrivere alcune ottimizzazioni Spark e possibilmente piani fisici che supportino STREAMTABLE (che sembra un sacco di lavoro) ma è possibile. Gli strumenti ci sono.

Per quanto riguarda unirsi ottimizzazioni, nel prossimo Spark 2.3 ci sono due principali ottimizzazioni logici:

  1. ReorderJoin
  2. CostBasedJoinReorder (esclusivamente per i costi a base di ottimizzazione)
Problemi correlati