SchemaRDD是存放 Row 对象的 RDD,每个 Row 对象代表一行记录。 SchemaRDD 还包含记录的结构信息(即数据字段)。 SchemaRDD 看起来和普通的 RDD 很像,但是在内部, SchemaRDD 可以利用结构信息更加高效地存储数据。 此外, SchemaRDD 还支持 RDD 上所没有的一些新操作,比如运行 SQL 查询。 SchemaRDD 可以从外部数据源创建,也可以从查询结果或普通 RDD 中创建。
若要把 Spark SQL 连接到一个部署好的 Hive 上,你必须把 hive-site.xml 复制到Spark 的配置文件目录中( $SPARK_HOME/conf)。即使没有部署好 Hive, Spark SQL 也可以运行。如果你没有部署好 Hive, Spark SQL 会在当前的工作目录中创建出自己的Hive 元数据仓库, 叫作 metastore_db。此外,如果你尝试使用 HiveQL 中的 CREATE TABLE(并非 CREATE EXTERNAL TABLE)语句来创建表,这些表会被放在你默认的文件系统中的/user/hive/warehouse 目录中( 如果你的 classpath 中有配好的 hdfs-site.xml,默认的文件系统就是 HDFS,否则就是本地文件系统)。
1. 使用Spark SQL
初始化
# 导入Spark SQL
from pyspark.sql import HiveContext, Row
# 当不能引入hive依赖时
from pyspark.sql import SQLContext, Row
hiveCtx = HiveContext(sc)
基本查询
<