火花+镶木地板"database"的设计



我每天都有100G的文本文件,我希望创建一个可以从Spark访问的高效"数据库"。我所说的"数据库"是指对数据执行快速查询(大约一年前)的能力,并且每天增量添加数据,最好没有读锁定。

假设我想使用Spark SQL和parquet,实现此目的的最佳方法是什么?

  • 放弃并发读取/写入,并将新数据附加到现有的 Parquet 文件。
  • 为每天的数据创建一个新的 parquet 文件,并利用 Spark 可以加载多个 parquet 文件的事实来允许我加载例如一整年。这有效地给了我"并发性"。
  • 别的?

随意建议其他选项,但让我们假设我现在正在使用镶木地板,因为从我所读到的内容来看,这将对许多其他人有所帮助。

我的 0 级设计

  • 使用按日期/时间分区(如果查询基于日期/时间以避免扫描所有数据)
  • 在需要时使用追加保存模式
  • 运行 SparkSQL 分布式 SQL 引擎,以便
    1. 启用从多个客户端/应用程序/用户查询数据
    2. 在所有客户端/应用程序/用户中仅缓存一次数据
  • 如果可以的话,只使用 HDFS 来存储所有镶木地板文件

我的系统中有非常相似的要求。我会说如果加载全年的数据 - 对于 100g 一天,这将是 36T 数据,如果你每天需要加载 36TB,那无论如何都不可能很快。最好将处理的每日数据保存在某个地方(例如计数,总和,不同的结果),并使用它来返回全年。

相关内容

  • 没有找到相关文章

最新更新