页面树结构

2017-07-25 Apache Spark 2.2.0 官方文档中文版发布 : http://spark.apachecn.org/docs/cn/2.2.0/


MachineLearning 优酷地址 : http://i.youku.com/apachecn

转至元数据结尾
转至元数据起始

Spark 1.3 中,我们从 Spark SQL 中删除了 "Alpha的标签,作为一部分已经清理过的可用的 API 。从 Spark 1.3 版本以上,Spark SQL 将提供在 1.X 系列的其他版本的二进制兼容性。这种兼容性保证不包括被明确标记为不稳定的(即 DeveloperApi 类或 Experimental)的 API

重命名 SchemaRDD 到 DateFrame

升级到 Spark SQL 1.3 版本时,用户会发现最大的变化是,SchemaRDD 已更名为 DataFrame。这主要是因为 DataFrames 不再从 RDD 直接继承,而是由 RDDS 自己来实现这些功能。DataFrames 仍然可以通过调用 .rdd 方法转换为 RDDS 。

Scala 中,有一个从 SchemaRDD 到 DataFrame 类型别名,可以为一些情况提供源代码兼容性。它仍然建议用户更新他们的代码以使用 DataFrame 来代替。JavaPython 用户需要更新他们的代码。

在 Java 和 Scala API 的统一

此前 Spark 1.3 有单独的Java兼容类(JavaSQLContext 和 JavaSchemaRDD),借鉴于 Scala API。在 Spark 1.3 中,Java APIScala API 已经统一。两种语言的用户可以使用 SQLContext 和 DataFrame 。一般来说论文类尝试使用两种语言的共有类型(如 Array 替代了一些特定集合)。在某些情况下不通用的类型情况下,(例如,passing in closures Maps)使用函数重载代替。

此外,该 Java 的特定类型的 API 已被删除。ScalaJava 的用户可以使用存在于 org.apache.spark.sql.types 类来描述编程模式。

隐式转换和 DSL 包的移除(仅限于 Scala)

许多 Spark 1.3 版本以前的代码示例都以 import sqlContext._ 开始这提供了从 sqlContextcope所有功能。在 Spark 1.3 中,我们移除了从 RDDsDateFrame 再到 SQLContext 内部对象的隐式转换。

此外,隐式转换现在只是通过 toDF 方法增加 RDDs 所组成的一些类型(例如 classestuples,而不是自动应用。

当使用 DSL 的内部函数(现在由 DataFrame API 代替)的时候,用于一般会导入 org.apache.spark.sql.catalyst.dsl代替一些公有的 DataFrameAPI 函数 : import org.apache.spark.sql.functions._

删除在 org.apache.spark.sql 包中的一些 DataType 别名(仅限于 Scala)

Spark 1.3 移除存在于基本 SQL 包的 DataType 类型别名。开发人员应改为导入类 org.apache.spark.sql.types

UDF 注册迁移到 sqlContext.udf 中 (针对Java和Scala)

用于注册 UDF 的函数,不管是 DataFrame DSL 还是 SQL 中用到的,都被迁移到 SQLContext 中的 udf对象中。

sqlContext.udf.register("strLen", (s: String) => s.length())

Python UDF 注册保持不变。

Python 的 DataType 不再是单例的

Python 中使用 DataTypes 时,你需要先构造它们(如:StringType()),而不是引用一个单例对象。