Я обычно использую %s
строковый форматер внутри строк SQL
sqlc.sql('select * from students where roll_no=%s and name="%s"' % ('1', 'ravindra')).show()
Глядя на свою трассировку sql, вы, должно быть, пропустили кавычки для значения name=
, когда ravindra
передается вsql string, а sql engine считает это вызовом переменной.
Ваш запрос sql становится
select * from students where roll_no=1 and name=ravindra -- no quotes
Вы можете настроить строку sql на
spark.sql("select * from student where roll_no={0} and name='{1}'".format(id,name)).show()
, указав {1}
, чтобы получить желаемый результат.