Spark 2.0+
Spark 2.0 fornisce funzioni native finestra (SPARK-8641) e dispone di alcuni ulteriori miglioramenti in analisi e molto meglio rispetto SQL 2003, in modo che è significativamente meno dipendente Hive per raggiungere nucleo funcionality e a causa di quello HiveContext
(SparkSession
con supporto Hive) sembra essere leggermente meno importante.
Spark < 2,0
Ovviamente se si desidera lavorare con Hive è necessario utilizzare HiveContext
. Oltre a ciò, la più grande differenza per ora (Spark 1.5) è il supporto per window functions e la possibilità di accedere alle UDF di Hive.
In generale le funzioni di finestra sono una funzionalità piuttosto interessante e possono essere utilizzate per risolvere problemi piuttosto complessi in modo conciso senza andare avanti e indietro tra RDD e DataFrames. Le prestazioni sono ancora lontane dall'ottimizzazione, in particolare senza la clausola PARTITION BY
, ma in realtà non sono specifiche di Spark.
Per quanto riguarda le UDF di Hive, non è un problema serio ora, ma prima di Spark 1.5 molte funzioni SQL sono state espresse utilizzando UDF Hive e richiesto HiveContext
per funzionare.
HiveContext
fornisce anche parser SQL più robusto. Vedere ad esempio: py4j.protocol.Py4JJavaError when selecting nested column in dataframe using select statetment
Infine è necessario HiveContext
per avviare il server di risparmio.
Il problema più grande con HiveContext
è che viene fornito con grandi dipendenze.
Dal tuo commento, sembra L'unico svantaggio di HiveContext è che si tratta di grandi dipendenze. Oltre a questo, è una scommessa sicura utilizzare sempre HiveContext invece di SqlContext. Sto eseguendo l'ambiente SparkR 1.6. –
Da https://jaceklaskowski.gitbooks.io/mastering-apache-spark/content/spark-sql-SparkSession.html "SparkSession ha unito SQLContext e HiveContext in un oggetto in Spark 2.0." –