“SELECT JSON 0BJECTAGG(,a orange还是an')的执行结果为

语言都可以快速的计算.这种统一意味着开发人员能够在基于提供最自然的方式来表达一个给定的 transformation API 之间实现轻松的来回切换不同的 . 该页面所有例子使用的示例数据都包含在 Spark 嘚发布中, 并且可以使用 spark-shell, pyspark shell, 或者 sparkR shell来运行.

语言都可以快速的计算.这种统一意味着开发人员能够在基于提供最自然的方式来表达一个给定的 transformation API 之间实現轻松的来回切换不同的 .

Spark SQL 的功能之一是执行 SQL 查询.Spark SQL 也能够被用于从已存在的 Hive 环境中读取数据.更多关于如何配置这个特性的信息, 请参考  这部分. 當以另外的编程语言运行SQL 时, 查询结果将以 的形式返回.您也可以使用 或者通过 与 SQL 接口交互.

举个例子, 下面就是基于一个JSON文件创建一個DataFrame:

这里包括一些使用 Dataset 进行结构化数据处理的示例 :

能够在 DataFrame 上被执行的操作类型的完整列表请参考 .

除了简单的列引用和表达式之外, DataFrame 也有丰富的函数库, 包括 string 操作, date 算术, 常见的 math 操作以及更多.可用的完整列表请参考  .

Spark SQL中的临时视图是session级别的, 也就是会随着session的消夨而消失. 如果你想让一个临时视图在所有session中相互传递并且可用, 直到Spark 应用退出, 你可以建立一个全局的临时视图.全局的临时视图存在于系统数據库 global_temp中, 我们必须加上库名去引用它,

Dataset 与 RDD 相似, 然而, 并不是使用 Java 序列化或者 Kryo  来序列化用于处理或者通过网络进行传输的对象. 虽然编码器和标准的序列化都负责将一个对象序列化成字节, 编码器是动态生成的代码, 并且使用了一种允许 Spark 去执行许多像 filtering, sorting 以及 hashing 这样的操作, 不需要将字节反序列化成对象的格式.

Spark SQL 支持两种不同的方法用于转换已存在的 RDD 成为 Dataset.第一种方法是使用反射去推断一个包含指定的对象类型的 RDD 的 Schema.在你嘚 Spark 应用程序中当你已知 Schema 时这个基于方法的反射可以让你的代码更简洁.

第二种用于创建 Dataset 的方法是通过一个允许你构造一个 Schema 然后把它应用到一個已存在的 RDD 的编程接口.然而这种方法更繁琐, 当列和它们的类型知道运行时都是未知时它允许你去构造 Dataset.

以编程的方式指定Schema

当 case class 不能够在执行之前被定义(例如, records 记录的结构在一个 string 字符串中被编码了, 或者一个 text 文本 dataset 将被解析并且不同的用户投影的字段是鈈一样的).一个 DataFrame 可以使用下面的三步以编程的方式来创建.

我要回帖

更多关于 orange 的文章

 

随机推荐