Подмена именованных параметров Spark SQL 3.4 в JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Подмена именованных параметров Spark SQL 3.4 в Java

Сообщение Anonymous »

Начиная с версии Spark 3.4, SparkSession.sql(...) поддерживает использование именованных параметров в запросах SQL:

Код: Выделить всё

public Dataset sql(String sqlText, Map args)
Executes a SQL query substituting named parameters by the given arguments
К сожалению, в Javadoc ничего не говорится о том, как указывать именованные параметры в SQL-запросе, а в другой документации можно найти множество различных форм, например
  • В справочнике по API pyspark: {param
  • В справочной документации по Spark SQL: :param< /li>
    В ответах на подобные вопросы SO и в других источниках: ${param}
Однако , у меня ничего из этого не работает, хотя в моем контексте для spark.sql.variable.substitute установлено значение true:

Код: Выделить всё

//These throw syntax exceptions because the parameter is not substituted
spark.sql("SELECT * FROM {table}",  Map.of("table",    "my_table"));
spark.sql("SELECT * FROM {table}",  Map.of("{table}",  "my_table"));
spark.sql("SELECT * FROM :table",   Map.of("table",    "my_table"));
spark.sql("SELECT * FROM :table",   Map.of(":table",   "my_table"));
//These replace the parameter with an empty string
spark.sql("SELECT * FROM ${table}", Map.of("table",    "my_table"));
spark.sql("SELECT * FROM ${table}", Map.of("${table}", "my_table"));
Форма ${param} выглядит немного более многообещающе, чем остальные, поскольку со строкой запроса хоть что-то происходит.
Итак, вкратце: какова окончательно правильная форма именованных параметров и как передать для них значения?

Подробнее здесь: https://stackoverflow.com/questions/787 ... on-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»