Apache spark 存储结构化流和OLAP查询的spark sql结果的最佳故障保护策略
我希望以这种方式存储针对流数据运行的连续查询的结果,以便将结果持久化到分布式节点中,以确保故障切换和可伸缩性 能不能请星火SQL专家们解释一下 -(1)我应该选择哪个存储选项,以便OLAP查询更快 -(2)如何确保即使一个节点关闭,数据也可用于查询 -(3)Spark SQL如何在内部存储结果集 谢谢Apache spark 存储结构化流和OLAP查询的spark sql结果的最佳故障保护策略,apache-spark,apache-spark-sql,spark-streaming,spark-dataframe,Apache Spark,Apache Spark Sql,Spark Streaming,Spark Dataframe,我希望以这种方式存储针对流数据运行的连续查询的结果,以便将结果持久化到分布式节点中,以确保故障切换和可伸缩性 能不能请星火SQL专家们解释一下 -(1)我应该选择哪个存储选项,以便OLAP查询更快 -(2)如何确保即使一个节点关闭,数据也可用于查询 -(3)Spark SQL如何在内部存储结果集 谢谢 迦腻色迦这取决于你能承受的延迟 一种方法是使用persist()API将结果持久化到HDFS/Cassandra中。如果您的数据很小,那么每个RDD的cache()应该会给您一个好的结果 火花执
迦腻色迦这取决于你能承受的延迟
- 一种方法是使用
API将结果持久化到HDFS/Cassandra中。如果您的数据很小,那么每个RDD的persist()
应该会给您一个好的结果cache()
- 火花执行器所在地的商店。例如:
- 还可以使用基于内存的存储,如
来持久化流(即流的每个RDD)并对其进行查询tachyon
- 如果延迟不是问题,那么persist(内存或磁盘)应该能满足您的需要。请注意,在这种情况下,性能是成败攸关的。这也将数据存储在两个执行器中
- 还可以使用基于内存的存储,如
- 在其他情况下,如果您的客户在类似OLTP的数据库中更舒适,他们只需要查询不断更新的结果,那么您可以使用传统的数据库,如
或postgres
。这是许多方法中的首选方法,因为查询时间是一致的和可预测的。如果结果不是更新繁重,而是分区(比如按时间),那么mysql
类系统也是一种选择Greenplum
path/to/destination/dir
,因此不需要将其复制到所有节点。这完全取决于你有多少个分区。为了控制局面并确保所有执行者都获得一些数据,您可以使用自己的分区逻辑重新分区数据,这将确保所有机器都拥有部分数据。