我有用Scala编写的Spark代码。 Spark读取元表(已在Spark中作为临时表存储),其中存储要执行的SQL。
我面临的问题是,我们有一些查询使用变量(在Scala代码中定义)。
我尝试了不同的方法,但无法将变量替换为值。
下一步是执行这个sql。
我面临的问题是,我们有一些查询使用变量(在Scala代码中定义)。
我尝试了不同的方法,但无法将变量替换为值。
var begindate= s"2017-01-01";
var enddate = s"2017-01-05";
Msg.print_info(s"begin processing from ${beginDate} to ${endDate}");
//Reading SQL from MetaData table stored in spark as meta_table (temp table)
val dynamic_read_sql = s"""
select SQL_TEXT
from meta_table""";
val dynamic_sql_query = sqlContext.sql(dynamic_read_sql);
val check_query = dynamic_sql_query.first().getString(0);
Msg.print_info(s"check_query = $check_query");
我成功地显示了SQL。
// date is also temp table in spark
select * from date where load_date >= '${begindate}' and load_date <='${enddate}'
下一步是执行这个sql。
dynamic_sql_find = sqlContext.sql(check_query);
但是它无法替换代码中已经定义的'${begindate}'和'${enddate}',因此返回0条记录。
我尝试将存储在另一个变量中。
val replace_check_query = s"${check_query}"
但是,它没有替换变量。
你能帮忙吗?