我传递变量,但它不是传递值。
我在这里填充变量值。
val Temp = sqlContext.read.parquet("Tabl1.parquet")
Temp.registerTempTable("temp")
val year = sqlContext.sql("""select value from Temp where name="YEAR"""")
year.show()
这里是年份。show()的正确值。
我在下面的代码中传递参数。
val data = sqlContext.sql("""select count(*) from Table where Year='$year' limit 10""")
data.show()
1条答案
按热度按时间liwlm1x91#
价值
year
是一个Dataframe
,不是特定值(Int
或者Long
). 所以当你在一个字符串插值中使用它,你会得到Dataframe.toString
,这不是可以用来比较值的对象(tostring返回Dataframe模式的字符串表示)。如果你能假设
year
dataframe只有一行和一列类型Int
,并且您希望获得该列的值-您可以使用first().getAs[Int](0)
要获取该值,然后使用它构造下一个查询:如果
value
中的列Temp
表的类型不同(String
,Long
)-只需更换Int
用那种类型。