抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

Spark SQL,可对不同格式的数据执行ETL操作(如JSON,Parquet,数据库)然后完成特定的查询操作。

  • DataFrame
  • Data Sources
  • JDBC Server

使用Spark SQL时,最主要的两个组件就是 DataFrameSQLContext

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)

SQLContext
HiveContext

3. JDBC数据源

JDBC 数据源 可用于通过JDBC API读取关系型数据库中的数据。相比于使用JdbcRDD,应该将JDBC数据源的方式作为首选,因为JDBC数据源能够将结果作为DataFrame对象返回,直接用Spark SQL处理或与其他数据源连接。

为确保Spark Shell程序有足够的内存,可以在运行spark-shell命令时,加入driver-memory命令行参数,如下所示:

1
spark-shell.cmd --driver-memory 1G

Ref

用Apache Spark进行大数据处理——第二部分:Spark SQL