У меня есть сценарий, в котором я получу запрос из столбца улья в виде текста.Я должен получить количество строк этого запроса, подключившись к исходной системе.
ниже мой код (Примечание: есть некоторые операторы case и для циклов. Я вставил упрощенную форму кода)
val tableResult = sqlContext.sql(s"select param_id,db_validation,type,src_dbtype,src_hostname,src_dbname,src_schema,src_tables,src_query from hivedb.db_vld_param1 where db_validation = 'Y' and param_id in (1300)")
val rdd= tableResult.collect()
val src_query= rdd(0).getString(8) // (my query is SELECT * FROM Schema.Table WHERE Primarykey = 1139)
val connectionString= "jdbc:sqlserver://hostname;database=DB;user=USER;password=PSWD"
val count_df= sqlContext.read.format("jdbc").option("url",(s"$connectionString")).option("dbtable",(s"""(SELECT count(*) row_count from (${src_query})a ) as temp""")).option("driver","com.microsoft.sqlserver.jdbc.SQLServerDriver").load()
Но я получаю ошибку ниже
NoViableAltException (307 @ [147: 1: selectExpression: (expression | tableAllColumns);]) org.apache.spark.sql.AnalysisException: не может распознатьвведите около 's' '' SELECT * FROM Schema.Table WHERE Primarykey = 1139 '' ',' в выражении выбора;строка 1 поз 19
Но когда я выполняю команду кода командой из терминала, она работает нормально.Кто-нибудь имеет представление о том, когда мы получаем такой тип ошибки.