07大数据内存计算spark系列贴-spark SQL
2014-12-15 10:10
549 查看
(原文地址:http://blog.csdn.net/codemosi/article/category/2777045,转载麻烦带上原文地址。hadoop hive hbase mahout storm spark kafka flume,等连载中,做个爱分享的人
)
[align=left]版本 spark 1.1.0[/align]
[align=left]spark SQL 简介[/align]
[align=left] spark SQL 用来替代shark来,做基于spark内核的,面向结构化数据的的数据仓库。1.10支持 jdbc[/align]
spark SQL查询的结构化数据(RDD,parquet,json),可以作为spark 的分布式的数据集(RDD),集成API在Python中,Scala和Java程序中,这意味着spark SQL可以集成其他spark的组件,如mllib+spark SQL提供SQL+机器学习的超复杂程序。SchemaRDD 对象对各种结构化数据源提供了一致的编程API。对程序员来说。spark SQL ==SchemaRDD
的API。
[align=left] spark SQL 可以直接复用 hive 的数据仓库,和任务脚本。[/align]
[align=left]spark SQL 编程API介绍[/align]
[align=left]//1 数据源转成SchemaRDD[/align]
/**
* Registers this RDD as a temporary table using the given name. The lifetime of this temporary
* table is tied to the [[SQLContext]] that was used to create this SchemaRDD.
*
* @group schema
*/
def registerTempTable(tableName: String): Unit = {
sqlContext.registerRDDAsTable(baseSchemaRDD, tableName)
}
[align=left]//2 SchemaRDD的sql查询方法[/align]
/**
* Executes a SQL query using Spark, returning the result as a SchemaRDD. The dialect that is
* used for SQL parsing can be configured with 'spark.sql.dialect'.
*
* @group userf
*/
def sql(sqlText: String //
要执行的SQL语句
): SchemaRDD = {
if (dialect == "sql") { //默认的sqlcontext 的 dialect 方言默认使用sql 来查询
new SchemaRDD(this, parseSql(sqlText))
} else { //HIVE 通过改变 方言,可以改为 hiveQL 语法,来解析 语句
sys.error(s"Unsupported SQL dialect: $dialect")
}
}
[align=left]//3 spark sql = SchemaRDD,SchemaRDD继承RDD,所以sql后的结果集,可以使用RDD的方法来解析[/align]
class SchemaRDD(
@transient val sqlContext: SQLContext,
@transient val baseLogicalPlan: LogicalPlan)
extends RDD[Row](sqlContext.sparkContext, Nil) with SchemaRDDLike {
[align=left]spark SQL的sql官方例子[/align]
[align=left]1 spark sql的基础使用流程[/align]
[align=left]//0 准备spark sql的上下文环境[/align]
[align=left] val sparkConf = new SparkConf().setAppName("rdc spark sql test")[/align]
val sc = new SparkContext(sparkConf)
val sqlContext = new SQLContext(sc)
import sqlContext._
[align=left]//1 准备数据[/align]
val rdd = sc.parallelize((1 to 100).map(i => Record(i, s"val_$i")))
//2 转成SchemaRDD
[align=left] rdd.registerTempTable("records")[/align]
//3 执行sql查询
sql("SELECT * FROM records").collect().foreach(println)
[align=left]2 spark sql 读取hive[/align]
[align=left][/align]
//0 准备spark sql 连 hive的上下文环境
val sparkConf = new SparkConf().setAppName("HiveFromSpark")
val sc = new SparkContext(sparkConf)
val hiveContext = new HiveContext(sc)
import hiveContext._
//2 spark sql查询hive原有数据
val rddFromSql = sql("SELECT key, value FROM src WHERE key < 10 ORDER BY key")
[align=left]2 spark sql 1.1.0 中,使用 jdbc来使用spark sql[/align]
[align=left]和jdbc访问mysql一样。[/align]
)
[align=left]版本 spark 1.1.0[/align]
[align=left]spark SQL 简介[/align]
[align=left] spark SQL 用来替代shark来,做基于spark内核的,面向结构化数据的的数据仓库。1.10支持 jdbc[/align]
spark SQL查询的结构化数据(RDD,parquet,json),可以作为spark 的分布式的数据集(RDD),集成API在Python中,Scala和Java程序中,这意味着spark SQL可以集成其他spark的组件,如mllib+spark SQL提供SQL+机器学习的超复杂程序。SchemaRDD 对象对各种结构化数据源提供了一致的编程API。对程序员来说。spark SQL ==SchemaRDD
的API。
[align=left] spark SQL 可以直接复用 hive 的数据仓库,和任务脚本。[/align]
[align=left]spark SQL 编程API介绍[/align]
[align=left]//1 数据源转成SchemaRDD[/align]
/**
* Registers this RDD as a temporary table using the given name. The lifetime of this temporary
* table is tied to the [[SQLContext]] that was used to create this SchemaRDD.
*
* @group schema
*/
def registerTempTable(tableName: String): Unit = {
sqlContext.registerRDDAsTable(baseSchemaRDD, tableName)
}
[align=left]//2 SchemaRDD的sql查询方法[/align]
/**
* Executes a SQL query using Spark, returning the result as a SchemaRDD. The dialect that is
* used for SQL parsing can be configured with 'spark.sql.dialect'.
*
* @group userf
*/
def sql(sqlText: String //
要执行的SQL语句
): SchemaRDD = {
if (dialect == "sql") { //默认的sqlcontext 的 dialect 方言默认使用sql 来查询
new SchemaRDD(this, parseSql(sqlText))
} else { //HIVE 通过改变 方言,可以改为 hiveQL 语法,来解析 语句
sys.error(s"Unsupported SQL dialect: $dialect")
}
}
[align=left]//3 spark sql = SchemaRDD,SchemaRDD继承RDD,所以sql后的结果集,可以使用RDD的方法来解析[/align]
class SchemaRDD(
@transient val sqlContext: SQLContext,
@transient val baseLogicalPlan: LogicalPlan)
extends RDD[Row](sqlContext.sparkContext, Nil) with SchemaRDDLike {
[align=left]spark SQL的sql官方例子[/align]
[align=left]1 spark sql的基础使用流程[/align]
[align=left]//0 准备spark sql的上下文环境[/align]
[align=left] val sparkConf = new SparkConf().setAppName("rdc spark sql test")[/align]
val sc = new SparkContext(sparkConf)
val sqlContext = new SQLContext(sc)
import sqlContext._
[align=left]//1 准备数据[/align]
val rdd = sc.parallelize((1 to 100).map(i => Record(i, s"val_$i")))
//2 转成SchemaRDD
[align=left] rdd.registerTempTable("records")[/align]
//3 执行sql查询
sql("SELECT * FROM records").collect().foreach(println)
[align=left]2 spark sql 读取hive[/align]
[align=left][/align]
//0 准备spark sql 连 hive的上下文环境
val sparkConf = new SparkConf().setAppName("HiveFromSpark")
val sc = new SparkContext(sparkConf)
val hiveContext = new HiveContext(sc)
import hiveContext._
//2 spark sql查询hive原有数据
val rddFromSql = sql("SELECT key, value FROM src WHERE key < 10 ORDER BY key")
[align=left]2 spark sql 1.1.0 中,使用 jdbc来使用spark sql[/align]
[align=left]和jdbc访问mysql一样。[/align]
相关文章推荐
- 04大数据内存计算spark系列贴-SHARK(SQL on spark 0.x)
- 05大数据内存计算spark系列贴-spark straming 流式计算
- 01-大数据内存计算spark系列贴-spark生态系统简介
- 03-大数据内存计算spark系列贴-spark整合hbase,优化BI平台
- 06大数据内存计算spark系列贴-mllib 机器学习
- 02-大数据内存计算spark系列贴-spark介绍、spark程序
- Spark号称“内存计算框架” , 它将所有数据写 到内存吗?
- Spark 介绍(基于内存计算的大数据并行计算框架)
- 大数据SQL交互查询 presto/spark/mapreduce 计算引擎对比
- 数据科学家如何优雅的运行R在spark内存计算引擎上
- 大数据IMF传奇行动绝密课程第97课:使用SparkStreaming+SparkSQL实现在线动态计算出特定时间窗口
- 6大数据实战系列-sparkSql实战
- Spark 介绍(基于内存计算的大数据并行计算框架)
- SparkSQL结合SparkStreaming,使用SQL完成实时计算中的数据统计
- ADO内存数据对象SqlDataAdapter类使用SqlDataAdapter在数据库和DataSet之间架起桥梁:
- PHP相关系列 - 使用 PHP 直接在共享内存中存储数据集
- SQL计算数据库表占用的真实空间大小
- Red Gate系列之四 SQL Data Compare 10.2.0.885 Edition 数据比较同步工具 完全破解+使用教程
- 两次SQL 学习之感悟——数据库查询语言——走进数据系列之十二
- SSAS系列——【07】多维数据(查询Cube)