Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 存储结构化流和OLAP查询的spark sql结果的最佳故障保护策略_Apache Spark_Apache Spark Sql_Spark Streaming_Spark Dataframe - Fatal编程技术网

Apache spark 存储结构化流和OLAP查询的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()应该会给您一个好的结果 火花执

我希望以这种方式存储针对流数据运行的连续查询的结果,以便将结果持久化到分布式节点中,以确保故障切换和可伸缩性

能不能请星火SQL专家们解释一下 -(1)我应该选择哪个存储选项,以便OLAP查询更快 -(2)如何确保即使一个节点关闭,数据也可用于查询 -(3)Spark SQL如何在内部存储结果集

谢谢
迦腻色迦

这取决于你能承受的延迟

  • 一种方法是使用
    persist()
    API将结果持久化到HDFS/Cassandra中。如果您的数据很小,那么每个RDD的
    cache()
    应该会给您一个好的结果

  • 火花执行器所在地的商店。例如:

    • 还可以使用基于内存的存储,如
      tachyon
      来持久化流(即流的每个RDD)并对其进行查询
    • 如果延迟不是问题,那么persist(内存或磁盘)应该能满足您的需要。请注意,在这种情况下,性能是成败攸关的。这也将数据存储在两个执行器中
  • 在其他情况下,如果您的客户在类似OLTP的数据库中更舒适,他们只需要查询不断更新的结果,那么您可以使用传统的数据库,如
    postgres
    mysql
    。这是许多方法中的首选方法,因为查询时间是一致的和可预测的。如果结果不是更新繁重,而是分区(比如按时间),那么
    Greenplum
    类系统也是一种选择

更具体地说,如果我使用writeStream.format(“parquet”).选项(“path”、“path/To/destination/dir”),那么parquet文件中的编辑是否会自动复制到集群中的所有节点中?需要输出接收器上的快速查询和故障切换,复制否由于写入
path/to/destination/dir
,因此不需要将其复制到所有节点。这完全取决于你有多少个分区。为了控制局面并确保所有执行者都获得一些数据,您可以使用自己的分区逻辑重新分区数据,这将确保所有机器都拥有部分数据。