Spark+Parquet“数据库”设计

5 apache-spark parquet apache-spark-sql

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

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

  • 放弃并发读/写并将新数据附加到现有的镶木地板文件中。
  • 为每天的数据创建一个新的 parquet 文件,并利用 Spark 可以加载多个 parquet 文件的事实来允许我加载例如一整年的数据。这有效地给了我“并发性”。
  • 还有别的东西吗?

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

Ara*_*ram 3

我的0级设计

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