我对 Apache Spark 和 Spark-SQL 有一些经验。最近我发现了 Apache Drill 项目。您能否描述一下它们之间最显着的优势/差异是什么?我已经阅读了 Fast Hadoop Analytics(Cloudera Impala vs Spark/Shark vs Apache Drill) ,但这个主题对我来说仍然不清楚。
3 回答
这是我遇到的一篇文章,讨论了一些 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 JOIN 不同类型的数据集。例如,您可以将 MySQL 表中的记录与 JSON 文件、CSV 文件、OpenTSDB 或 MapR-DB 中的行连接起来……不胜枚举。Drill 可以连接到许多不同类型的数据。
当我考虑使用 Spark 时,我通常希望将它用于 RDD(弹性分布式数据集)。RDD 可以轻松快速地处理大量数据。Spark 还有一堆用于 ML 和流式传输的库。Drill 根本不处理数据。它只是让您访问所述数据。您可以使用 Drill 将数据拉入 Spark、Tensorflow、PySpark 或 Tableau 等。
Apache Spark-SQL:
- 您需要编写代码(Scala、Java 或 Python)来访问和处理数据。
- SQL 查询可以针对 Dataframe 执行。
- 可以以分布式方式(集群)执行。
- 几乎每个数据存储都有 Spark 驱动程序或连接器。
- 用于大规模并行计算/数据分析。
- 支持流处理。
- 拥有更大的支持社区。
阿帕奇钻:
- 无需编写代码,Drill 将探索数据源并创建自己的数据目录。
- 更易于使用,只需 SQL。
- 可以以分布式方式(集群)执行。
- 它可用于从许多数据源读取数据,例如 MongoDB、Parquet 文件、MySQL 和任何 JDBC 数据库。
- 用于临时数据探索。
- 它不支持流处理。
- 它有一个较小的支持社区。