什么是Spark SQL
Spark SQL是Apache Spark用于处理结构化数据的模块。Spark SQL允许使用SQL或熟悉的DataFrame API查询Spark程序内的结构化数据。Spark SQL支持多语言编程包括Java、Scala、Python和R,可以根据自身喜好进行选择。本文中所涉及的Spark SQL代码示例均使用python语言。
Spark SQL的核心-DataFrame
DataFrame是一个以命名列(类似于关系表中的字段)组织的分布式数据集。可以把它看成关系数据库中的一张表或R/python中的DataFrame数据结构(在spark 1.3以前,称为schema-RDD,后改为DataFrame)。
DataFrame可以通过多种来源创建:结构化数据文件,hive的表,外部数据库或者RDDs
Spark SQL的使用
Spark SQL所有的功能入口都是SQLContext 类,及其子类。不过要创建一个SQLContext对象,首先需要有一个SparkContext对象,然后再创建SQLContext
from pyspark import SparkContext
from pyspark import SQLContext
sc = SparkContext("local","my_pyspark")
spark = SQLContext(sc)
除了SQLContext之外,你也可以创建HiveContext,HiveContext是SQLContext 的超集。
创建DataFrame
数据来源可以是已有的RDD、或Hive表、或其他数据源
以下是一个从JSON文件创建DataFrame的小例子:
df = spark.read.json("/usr/local/spark/examples/src/main/resources/people.json") #自带的示例文件,可在安装路径下查找
df.show() #展示DataFrame的内容
以下是一个从RDD创建DataFrame的小例子:
from pyspark import Row
rdd = sc.parallelize([
Row(name='Michael',age=29),
Row(name='Andy', age=30),
Row(name=