Apache Spark SQLContext 与 HiveContext 之间有什么区别?
What is the difference between Apache Spark SQLContext vs HiveContext?
Apache Spark SQLContext 和 HiveContext 有什么区别?
一些消息来源说,由于 HiveContext 是 SQLContext 的超集,开发人员应该始终使用比 SQLContext 具有更多功能的 HiveContext。但是目前各个context的API基本相同
- 在哪些场景下SQLContext/HiveContext更有用?。
- HiveContext 是否只有在使用 Hive 时更有用?。
- 或者 SQLContext 是使用 Apache Spark 实现大数据应用程序所需要的全部吗?
Spark 2.0+
Spark 2.0 提供本机 window 函数 (SPARK-8641) 并在解析方面进行了一些额外的改进,并且更好地符合 SQL 2003,因此它显着减少了对 Hive 实现核心的依赖功能性,因此 HiveContext
(SparkSession
具有 Hive 支持)似乎不太重要。
Spark < 2.0
显然,如果您想使用 Hive,则必须使用 HiveContext
。除此之外,目前最大的区别(Spark 1.5)是对 window functions 的支持和访问 Hive UDF 的能力。
一般来说 window 函数是一个非常酷的特性,可以用于以简洁的方式解决非常复杂的问题,而无需在 RDD 和 DataFrame 之间来回切换。性能仍然远未达到最佳,特别是没有 PARTITION BY
子句,但它确实不是特定于 Spark 的。
关于 Hive UDF 现在这不是一个严重的问题,但是在 Spark 1.5 之前,许多 SQL 函数已经使用 Hive UDF 表达并且需要 HiveContext
才能工作。
HiveContext
还提供更强大的 SQL 解析器。参见示例:
最后 HiveContext
需要启动 Thrift 服务器。
HiveContext
最大的问题是它有很大的依赖性。
针对 Spark SQL 进行编程时,我们有两个入口点,具体取决于
我们是否需要 Hive 支持。推荐的入口点是 HiveContext 到
提供对 HiveQL 和其他 Hive 相关功能的访问。更基本的
SQLContext 提供了不依赖于 Spark SQL 支持的一个子集
蜂巢.
-对于可能与包含所有内容有冲突的用户存在分隔
Hive 依赖项。
-SQLContext 中没有的 HiveContext 的其他功能包括使用更完整的 HiveQL 解析器编写查询的能力、访问 Hive UDF 以及从 Hive 表读取数据的能力。
-使用 HiveContext 不需要现有的 Hive 设置。
HiveContext 仍然是 sqlcontext 的超集,它包含一些额外的属性,例如它可以从 hive-site.xml 读取配置,如果你有 hive 使用,否则只需使用 sqlcontext
Apache Spark SQLContext 和 HiveContext 有什么区别?
一些消息来源说,由于 HiveContext 是 SQLContext 的超集,开发人员应该始终使用比 SQLContext 具有更多功能的 HiveContext。但是目前各个context的API基本相同
- 在哪些场景下SQLContext/HiveContext更有用?。
- HiveContext 是否只有在使用 Hive 时更有用?。
- 或者 SQLContext 是使用 Apache Spark 实现大数据应用程序所需要的全部吗?
Spark 2.0+
Spark 2.0 提供本机 window 函数 (SPARK-8641) 并在解析方面进行了一些额外的改进,并且更好地符合 SQL 2003,因此它显着减少了对 Hive 实现核心的依赖功能性,因此 HiveContext
(SparkSession
具有 Hive 支持)似乎不太重要。
Spark < 2.0
显然,如果您想使用 Hive,则必须使用 HiveContext
。除此之外,目前最大的区别(Spark 1.5)是对 window functions 的支持和访问 Hive UDF 的能力。
一般来说 window 函数是一个非常酷的特性,可以用于以简洁的方式解决非常复杂的问题,而无需在 RDD 和 DataFrame 之间来回切换。性能仍然远未达到最佳,特别是没有 PARTITION BY
子句,但它确实不是特定于 Spark 的。
关于 Hive UDF 现在这不是一个严重的问题,但是在 Spark 1.5 之前,许多 SQL 函数已经使用 Hive UDF 表达并且需要 HiveContext
才能工作。
HiveContext
还提供更强大的 SQL 解析器。参见示例:
最后 HiveContext
需要启动 Thrift 服务器。
HiveContext
最大的问题是它有很大的依赖性。
针对 Spark SQL 进行编程时,我们有两个入口点,具体取决于 我们是否需要 Hive 支持。推荐的入口点是 HiveContext 到 提供对 HiveQL 和其他 Hive 相关功能的访问。更基本的 SQLContext 提供了不依赖于 Spark SQL 支持的一个子集 蜂巢.
-对于可能与包含所有内容有冲突的用户存在分隔 Hive 依赖项。
-SQLContext 中没有的 HiveContext 的其他功能包括使用更完整的 HiveQL 解析器编写查询的能力、访问 Hive UDF 以及从 Hive 表读取数据的能力。
-使用 HiveContext 不需要现有的 Hive 设置。
HiveContext 仍然是 sqlcontext 的超集,它包含一些额外的属性,例如它可以从 hive-site.xml 读取配置,如果你有 hive 使用,否则只需使用 sqlcontext