我用斯卡拉編寫的spark代碼。 Spark讀取存儲要執行的SQL的元表(已在spark中作爲臨時表)。我對着Scala字符串變量替換
問題是,我們有疑問,它使用的變量(在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");
我geting 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}"
但是,它並沒有取代變量。
你能幫忙嗎?
它工作正常。謝謝 !!! – jigarshah