2017-07-26 65 views
0

我工作的Spark 2.1应用程序也使用SparkSQL并使用dataframe.write.saveAsTable(tbl)保存数据。我的理解是,内存中的Derby DB用于Hive Metastore(右?)。这意味着我在第一次执行时创建的表在任何后续执行中都不可用。在许多情况下,这可能是预期的行为 - 但我想坚持执行过程中的Metastore(因为这也是我在生产系统中的行为)。运行Spark应用程序:坚持Metastore

所以,一个简单的问题:我该如何改变配置来保持光盘上的metastore?

一句话:我没有使用spark-shell或spark-submit启动Spark作业,而是作为独立的Scala应用程序启动。

回答

0

它已经保存在磁盘上。只要两个会话使用相同的工作目录或特定的Metastore配置,永久表将在会话之间保持不变。

+1

这个答案看起来还没有完成,并且存在着标记的高风险。我会建议你稍微扩展一下,或许用一些引用或网站中的一些引用来加以说明,并帮助证明你的答案。至少,不要用逗号结束答案。 :) – Jonathan

+0

我可以确认答案 - 但我想提一提的是,在创建Spark会话时需要包含.enableHiveSupport()。只有这样Metastore才会持续下去。 – Daniel