Spark/SparkSQL¶
依赖项¶
设置¶
我们建议您通过 conda 从 blaze 的 binstar 频道安装 Spark。
$ conda install pyhive spark -c blaze
该软件包在 Ubuntu Linux 和 Mac OS X 上运行良好。在非 Ubuntu Linux 发行版上安装此软件包时可能会出现其他问题。Arch Linux 存在一个已知问题。
接口¶
Spark 的工作方式与 odo 的其他部分略有不同。在 Spark 中,所有对象都附加到一个名为 SparkContext 的特殊对象。一次只能运行一个这样的对象。相比之下,SparkSQL 对象都存在于一个或多个 SQLContext 对象中。SQLContext 对象必须附加到 SparkContext。
下面是如何设置 SparkContext 的示例
>>> from pyspark import SparkContext
>>> sc = SparkContext('app', 'local')
接下来我们创建一个 SQLContext
>>> from pyspark.sql import SQLContext
>>> sql = SQLContext(sc) # from the previous code block
从这里开始,您可以使用 odo 创建 SchemaRDD 对象,它们是 SparkSQL 版本的表
>>> from odo import odo
>>> data = [('Alice', 300.0), ('Bob', 200.0), ('Donatello', -100.0)]
>>> type(sql)
<class 'pyspark.sql.SQLContext'>
>>> srdd = odo(data, sql, dshape='var * {name: string, amount: float64}')
>>> type(srdd)
<class 'pyspark.sql.SchemaRDD'>
注意 srdd 的类型。通常,如果 B 是一个 type,odo(A, B) 将返回 B 的实例。对于 Spark 和 SparkSQL,我们需要将我们创建的任何内容附加到上下文,所以我们“追加”到一个现有的 SparkContext/SQLContext。 odo 不会返回上下文对象,而是返回我们刚刚创建的 SchemaRDD。这使得处理结果更加方便。
此功能尚处于初期阶段,所以请尝试使用它,并且不要犹豫报告错误或请求功能!
URI¶
URI 语法目前尚未为 Spark 对象实现。
转换¶
进出 RDD 和 SchemaRDD 的主要路径是通过 Python list 对象
RDD <-> list
SchemaRDD <-> list
此外,还有一个专门的单向路径,用于从 RDD 直接转到 SchemaRDD
RDD -> SchemaRDD
待办事项¶
- 资源/URI
- JSON 和可能 CSV 的原生加载器
- HDFS 集成