Spark SQL,可对不同格式的数据执行ETL操作(如JSON,Parquet,数据库)然后完成特定的查询操作。
- DataFrame
- Data Sources
- JDBC Server
使用Spark SQL时,最主要的两个组件就是 DataFrame 和 SQLContext。
1. DataFrame
DataFrame 是一个分布式的,按照命名列的形式组织的数据集合。DataFrame基于R语言中的dataframe概念,与关系型数据库中的数据库表类似。
之前版本的Spark SQL API中的SchemaRDD已经更名为DataFrame
调用将DataFrame的内容作为行RDD(RDD of Rows)返回的rdd方法,可以将DataFrame转换成RDD。
创建 DataFrame
可以通过如下 数据源创建 DataFrame :
- 已有的RDD
- 结构化数据文件
- JSON数据集
- Hive表
- 外部数据库
DataFrame API
Spark SQL和DataFrame API已经在下述几种程序设计语言中实现:
2. SQLContext
SQLContext封装Spark中的所有关系型功能。可以用之前的示例中的现有SparkContext创建SQLContext。
1 | val sqlContext = new org.apache.spark.sql.SQLContext(sc) |
3. JDBC数据源
JDBC 数据源 可用于通过JDBC API读取关系型数据库中的数据。相比于使用JdbcRDD,应该将JDBC数据源的方式作为首选,因为JDBC数据源能够将结果作为DataFrame对象返回,直接用Spark SQL处理或与其他数据源连接。
为确保Spark Shell程序有足够的内存,可以在运行spark-shell命令时,加入driver-memory命令行参数,如下所示:
1 | spark-shell.cmd --driver-memory 1G |
Checking if Disqus is accessible...