web-dev-qa-db-fra.com

Comment passer des variables en spark SQL, en utilisant python?

J'écris du code spark en python . Comment passer une variable dans une requête spark.sql?

    q25 = 500
    Q1 = spark.sql("SELECT col1 from table where col2>500 limit $q25 , 1")

Actuellement, le code ci-dessus ne fonctionne pas? Comment pouvons-nous passer des variables?

J'ai aussi essayé, 

    Q1 = spark.sql("SELECT col1 from table where col2>500 limit q25='{}' , 1".format(q25))
7
Viv

Vous devez supprimer les guillemets simples et q25 dans le formatage de chaîne comme ceci:

Q1 = spark.sql("SELECT col1 from table where col2>500 limit {}, 1".format(q25))

Mettre à jour:

Basé sur vos nouvelles requêtes:

spark.sql("SELECT col1 from table where col2>500 order by col1 desc limit {}, 1".format(q25))

Notez que SparkSQL ne prend pas en charge OFFSET. Par conséquent, la requête ne peut pas fonctionner.

Si vous avez besoin d'ajouter plusieurs variables, vous pouvez essayer de cette façon:

q25 = 500
var2 = 50
Q1 = spark.sql("SELECT col1 from table where col2>{0} limit {1}".format(var2,q25))
8
Tiny.D

Tout ce que vous avez à faire est d’ajouter s (interpolateur de chaînes) à la chaîne. Cela permet l'utilisation de variable directement dans la chaîne.

val q25 = 10
Q1 = spark.sql(s"SELECT col1 from table where col2>500 limit $q25)
1
Deepesh Kumar