如何在Spark中把输入的数据流保存到执行数据结构中进行sql查询?

问题描述 投票:0回答:1

我是大数据领域的新人。我的目标是在某种数据结构中维护一个输入数据流,以便对其进行查询和聚合操作。有一个连续的数据流作为输入,通过spark的结构化流,我把它存储在一个DataFrame中。我的问题是

  • DataFrame是一个不稳定的数据结构吗?
  • 万一程序崩溃,DataFrame是否会被维护?
  • DataFrame是分布在集群的各个节点上,还是保存在执行代码的节点上?
  • 是否可以在Dataframe上创建索引来加快一些查询的响应速度?
dataframe apache-spark apache-spark-sql bigdata spark-streaming
1个回答
0
投票

如果你正打算使用Spark 2.4+,那么就选择Dataframes吧

  • 是的,DataFrame是不稳定的,一旦Spark工作完成,它们就会消失,但是你可以将它们保存为Parquet文件到磁盘上,并在以后通过SPARK HIVE和任何可以读取parquet文件格式的工具来查询它们。
  • 如果程序崩溃,DataFrame是无法恢复的,除非你在崩溃前恰好保存了它们,一旦你的Spark工作再次启动,你就可以在以后读取它们。
  • Data Frame是Spark使用和理解的分布式数据结构。所以是的,它是在Spark节点之间进行分区的。
  • Data Frame的分区是为了调整查询性能和减少数据洗牌。

除了以上几点,Spark还内置了检查点机制,以确保当你的作业崩溃时没有数据丢失。详细文档可以在Spark上找到

© www.soinside.com 2019 - 2024. All rights reserved.