将数据存储在内存中的Spark中

时间:2016-03-11 06:47:22

标签: apache-spark in-memory

即使SparkContext对象死亡,我也要求以表格格式将Spark中的数据保存在内存中,以便Tableau可以访问它。

我使用了registerTempTable,但是一旦SparkContext对象死亡,数据就会被删除。 是否可以存储这样的数据?如果没有可能的方式我可以调查数据到Tableau而不从HDFS位置读取数据。

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我开始知道上面提到的问题的一个非常有趣的答案。 TACHYON。 http://ampcamp.berkeley.edu/5/exercises/tachyon.html