语境。我有数十个SQL查询存储在单独的文件中。为了进行基准测试,我创建了一个遍历每个查询文件并将其传递给独立Spark应用程序的应用程序。这后一种首先解析查询,提取中使用的表,将它们登记(使用:在registerTempTable()
火花< 2和createOrReplaceTempView()
在火花2),和有效地执行该查询(spark.sql()
)。SparkSQL:帧内SparkSQL应用表登记
挑战。由于登记表可以是耗时的,我想懒惰地注册的表中,即,仅一次当它们用于第一,并保持在元数据的形式,可以容易地在随后的查询中使用而无需为每个查询重新注册表格。就我所知,这是一种内部作业缓存,但没有提供Spark提供的任何缓存选项(表缓存)。
这可能吗?如果没有人可以提出另一种方法来实现相同的目标(遍历单独的查询文件并运行查询Spark应用程序,而无需注册之前已经注册的表)。
我对我自己的问题发表评论。我遇到了由[Spark Job Server]提供的命名RDD /对象(https://github.com/spark-jobserver/spark-jobserver#named-objects)。还没有自己尝试过,但未来任何人通过这个问题可能想看看这个。 –