Spark/SparkSQL

设置

我们建议您通过 condablazebinstar 频道安装 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 是一个 typeodo(A, B) 将返回 B 的实例。对于 Spark 和 SparkSQL,我们需要将我们创建的任何内容附加到上下文,所以我们“追加”到一个现有的 SparkContext/SQLContextodo 不会返回上下文对象,而是返回我们刚刚创建的 SchemaRDD。这使得处理结果更加方便。

此功能尚处于初期阶段,所以请尝试使用它,并且不要犹豫报告错误或请求功能

URI

URI 语法目前尚未为 Spark 对象实现。

转换

进出 RDDSchemaRDD 的主要路径是通过 Python list 对象

RDD <-> list
SchemaRDD <-> list

此外,还有一个专门的单向路径,用于从 RDD 直接转到 SchemaRDD

RDD -> SchemaRDD

待办事项

  • 资源/URI
  • JSON 和可能 CSV 的原生加载器
  • HDFS 集成