ho verificato che sia Spark shell 2.0.xe shell e Thrift (linea d'aria) pure. Potrei riuscire a associare una variabile nella query Spark SQL con il comando set
.
Query senza variabile di legatura:
select count(1) from mytable;
query con variabili bind (parametrizzato):
1. guscio Spark SQL
set key_tbl=mytable; -- setting mytable to key_tbl to use as ${key_tbl}
select count(1) from ${key_tbl};
2. Spark guscio
spark.sql("set key_tbl=mytable")
spark.sql("select count(1) from ${key_tbl}").collect()
Sia w/WO impegnare params la query restituisce un risultato identico.
Nota: non danno alcuna citazioni al valore della chiave come è il nome della tabella qui.
Fammi sapere se ci sono domande.
Grazie il suo funzionamento. – user3769729
Non sono sicuro del motivo per cui è stato votato, ha funzionato per me nella scintilla 1.5.2. Grazie @Ashrith –
Non è una variabile bind. Stai costruendo una stringa ogni volta. Evey time Spark analizzerà la query, creerà il piano di esecuzione ecc. Lo scopo delle variabili di binding (nei sistemi RDBMS per esempio) è di ridurre i tempi di costruzione del piano di esecuzione. Deve avere un'API speciale per "legare" le variabili. Spark non ha questa funzionalità (da oggi, versione 1.6 di Spark). – Tagar