Apache Drill 与 Spark

Apache Drill vs Spark

我对 Apache Spark 和 Spark-SQL 有一些了解。最近我发现了 Apache Drill 项目。你能描述一下它们之间最重要的 advantages/differences 是什么吗?我已经读过 Fast Hadoop Analytics (Cloudera Impala vs Spark/Shark vs Apache Drill) 但是这个话题我还是不清楚。

这是我看到的一篇文章,其中讨论了一些 SQL 技术:http://www.zdnet.com/article/sql-and-hadoop-its-complicated/

Drill 在用户体验和架构上都有根本的不同。例如:

  • Drill 是一个无架构的查询引擎。例如,您可以将其指向 JSON 或 Parquet 日志文件的目录(在您的本地机器、NFS 共享、S3、HDFS、MapR-FS 等)和 运行 查询。您不必加载数据、创建和管理模式或预处理数据。
  • Drill 在内部使用 JSON 文档模型,允许它查询任何结构的数据。许多现代数据都很复杂,这意味着记录可以包含嵌套结构和数组,并且字段名称实际上可能对时间戳或网页 URL 等值进行编码。 Drill 允许普通的 BI 工具对此类数据进行无缝操作,而无需提前将数据展平。
  • Drill 适用于各种非关系数据存储,包括 Hadoop、NoSQL 数据库(MongoDB、HBase)和云存储。将添加其他数据存储。

Drill 1.0 刚刚发布(2015 年 5 月 19 日)。您可以轻松地将它下载到您的笔记本电脑上并在没有任何基础设施(Hadoop、NoSQL 等)的情况下使用它。

Drill 使您能够使用 ANSI SQL 查询不同类型的数据集。这使得它非常适合临时数据探索,以及通过 ODBC 将 BI 工具连接到数据集。您甚至可以使用 Drill SQL 连接不同类型的数据集。例如,您可以将 MySQL table 中的记录与 JSON 文件、CSV 文件、OpenTSDB 或 MapR-DB 中的行连接起来......列表在。 Drill 可以连接到许多不同类型的数据。

当我考虑使用 Spark 时,我通常希望将它用于 RDD(弹性分布式数据集)。 RDD 可以轻松快速地处理大量数据。 Spark 也有一堆用于 ML 和流媒体的库。 Drill 根本不处理数据。它只是让您访问所述数据。您可以使用 Drill 将数据拉入 Spark、Tensorflow、PySpark 或 Tableau 等

Apache Spark-SQL:

  • 您需要编写代码(Scala、Java 或 Python)来访问和处理数据。
  • SQL 可以针对 Dataframes 执行查询。
  • 可以分布式方式(集群)执行。
  • 几乎每个数据存储都有一个 Spark 驱动程序或连接器。
  • 用于大规模并行计算/数据分析。
  • 支持流处理。
  • 拥有更大的支持社区。

Apache 钻头:

  • 无需编写代码,Drill 将探索数据源并创建自己的数据目录。
  • 更易于使用,只需SQL。
  • 可以分布式方式(集群)执行。
  • 它可用于从许多数据源读取数据,例如 MongoDB、Parquet 文件、MySQL 和任何 JDBC 数据库。
  • 用于临时数据探索。
  • 不支持流处理
  • 它的支持社区较小。