我需要高效地执行sparksql语句。编译一次,执行多次(使用不同的参数值)。
对于一个简单的sql示例:
select * from my_table where year=:1
其中:1是绑定变量,因此该语句只编译一次,执行n次(使用不同的值),我需要相同的sparksql equivalent。
比如:
year = 2020
df_result = spark.sql("select * from my_table where year={0}".format(year))
不是我所期望的,因为它们不是真正的绑定变量,而是一个特定的示例化语句。
1条答案
按热度按时间r7s23pms1#
根据数据存储的位置、集群资源、表大小等。。。您可以考虑缓存整个表,这至少可以防止spark在每次执行查询时都必须读取磁盘/blob存储
根据您的体系结构,可能有很多方法可以做得更好,但我坚持使用100%基于spark的解决方案