SparkSQL到底是什么?

What exactly is SparkSQL?

我对整个 "big data" 技术世界还很陌生,最近开始阅读有关 Spark 的内容。不断出现的一件事是 SparkSQL,但我一直无法理解它到底是什么。

是否应该将 SQL 查询转换为对您提供的数据进行操作的 MapReduce?但是,就功能而言,数据框本质上不是已经 SQL 表了吗?

或者是某种允许您连接到 SQL 数据库并使用 Spark 查询它的技术?在这种情况下,这里的 Spark 有什么意义——为什么不直接使用 SQL?还是您可以将结构化 SQL 数据与平面数据结合使用?

再次强调,我对所有这一切都很陌生,可能会也可能不会说出我的屁股:)。因此,如果您发现我明显误解了某些内容,请纠正我并原谅我。

你的第一个答案基本上是正确的,它是 Spark 中的一个 API,你可以在 SQL 中编写查询,它们将被转换为一个并行化的 Spark 作业(Spark 可以做更复杂的类型操作而不仅仅是 map 和 reduce)。 Spark 数据帧实际上只是这个 API 的包装器,它只是访问 API 的另一种方式,具体取决于您更喜欢在 SQL 还是 [=12] 中编码=].

火花

Spark 是一个框架或一组非常大的组件,用于对大数据进行可扩展、高效的分析。

例如:人们每天向 YouTube 上传 1 PB 的视频。现在,以每秒 100 兆字节的速度从磁盘读取 1 TB 大约需要三个小时。这实际上是相当长的时间(便宜的磁盘在这里帮不了我们)。所以我们面临的挑战是一台机器无法处理,甚至存储所有的数据。 所以我们的解决方案是在机器集群上分布式数据。

DataFrames are the primary abstraction in Spark.

我们可以从文本文件、Json 文件、Hadoop 分布式文件系统、Apache Parquet 或 Hypertable 或 Amazon S3 文件、Apache HBase 构建一个数据框,然后对其执行一些操作、转换,无论它位于何处数据来自.

火花Sql

Spark SQL是一个用于结构化数据处理的Spark模块。如文档页面 here.

所述

所以 Spark SQL 的好处之一是它允许我们使用 SQL 语法从许多数据源查询结构化数据,并提供许多其他可能性。 我认为这是我们不直接使用 SQL 的原因。