将数据存储在 Spark In Memory 中

Storing Data in Spark In Memory

我有一个要求,即使 SparkContext 对象死了,也要以 table 格式在 Spark 的内存中保存数据,以便 Tableau 可以访问它。

我使用了 registerTempTable ,但是一旦 SparkContext 对象消失,数据就会被删除。 是否可以像这样存储数据?如果不能,我可以研究将数据提供给 Tableau 而无需从 HDFS 位置读取数据的可能方法。

您需要执行以下操作之一:

  1. 运行 您的 Spark 应用程序是一个长 运行ning 应用程序。 Spark Streaming 通常开箱即用(当您执行 StreamingContext.awaitTermination() 时)。我自己从未尝试过,但我认为 YARN 和 MESOS 支持 long 运行ning tasks。正如您提到的,每当您的 SparkContext 死亡时,所有数据都会丢失(因为所有信息都存储在上下文中)。我认为 spark-shell 是一个很长的 运行ning 应用程序,这就是大多数 Tableau/Spark 演示使用它的原因,因为上下文永远不会消失。
  2. 将其存储到数据存储(HDFS、数据库等)
  3. 尝试使用一些分布式内存 framework/file 系统,例如 Tachyon - 但不确定它是否有 Tableau 连接器。

Tableau 是否从自定义 Spark 应用程序读取数据?

我使用 PowerBi(而不是 Tableau),它通过 Thrift 客户端查询 Spark,所以每次它死掉并重新启动时,我都会通过 odbc/jdbc 驱动程序

向他发送 "cache table myTable" 查询

对于上述问题,我知道了一个非常有趣的答案。 快子。 http://ampcamp.berkeley.edu/5/exercises/tachyon.html