大数据Spark “蘑菇云”行动补充内容第66课: 即将成为Spark未来的Spark SQL
2016-10-26 20:53
495 查看
大数据Spark “蘑菇云”行动补充内容第66课: 即将成为Spark未来的Spark SQL
1,与直接基于RDD编程,写Spark SQL代码更少、编写更快、更容易修改和理解;
2,相比于直接进行RDD编程而言,Spark SQL会自动的进行性能优化
3,更有效的使用必要的数据,提高内存的使用价值
所有RDD的API在DataSet中是否都有实现? 算子功能级别的基本都有实现
DataSet是一种OO风格的接口
rdd是一条条的record,jvm java 对象,不同的数据来源读取数据困难,合并数据源也不简单.谓词下推弄不了
dtaframe:DataSet[Row]
dataset 为row的方式,合并数据来源比rdd更方便。
dataset:面向oo风格接口,吸收了rdd 的精髓 , 做类型检查,直接作用在domain对象之上
PageJumpOnce.scala
package com.dt.spak.SparkApps.pageLinks
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object PageJumpOnce {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setAppName("PageJumpOnce")
.setMaster("spark://192.168.189.1:7077").setJars(List(
// .setMaster("local[5]").setJars(List(
"/usr/local/spark-1.6.1-bin-hadoop2.6/lib/mysql-connector-java-5.1.13-bin.jar",
"/usr/local/IMF_testdata/PageJumpOnce.jar"))
val sc = new SparkContext(sparkConf)
val data = PageUtils.getData(sc)
val resolvedTask = PageUtils.parseArgsFromUser(args)
val aggregated = PageUtils.aggerateOnSession(data, resolvedTask)
val pageSplited = PageUtils.aggeratePageSplit(aggregated)
PageUtils.getResult(pageSplited, resolvedTask).foreachPartition { partition =>
{
}
}
}
}
PageUtils.scala
package com.dt.spak.SparkApps.pageLinks
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
object PageUtils {
def getData(sc: SparkContext): RDD[String] = {
generateData(sc)
}
def generateData(sc: SparkContext): RDD[String] = {
/**
* 数据可以来自于流处理系统,也可以来自批处理系统
*
*/
// MapPartitionsRDD[(String,String)] //要是同一个包 org.apache.spark.rdd
sc.parallelize("I into Spark so much".split(" "))
}
def parseArgsFromUser(args: Array[String]): Long = {
0L
}
def aggerateOnSession(rdd: RDD[String], taskType: Long): RDD[String] = {
rdd
}
def aggeratePageSplit(rdd: RDD[String]): RDD[String] = {
rdd
}
def getResult(rdd: RDD[String], taskType: Long): RDD[String] = {
rdd
}
}
1,与直接基于RDD编程,写Spark SQL代码更少、编写更快、更容易修改和理解;
2,相比于直接进行RDD编程而言,Spark SQL会自动的进行性能优化
3,更有效的使用必要的数据,提高内存的使用价值
所有RDD的API在DataSet中是否都有实现? 算子功能级别的基本都有实现
DataSet是一种OO风格的接口
rdd是一条条的record,jvm java 对象,不同的数据来源读取数据困难,合并数据源也不简单.谓词下推弄不了
dtaframe:DataSet[Row]
dataset 为row的方式,合并数据来源比rdd更方便。
dataset:面向oo风格接口,吸收了rdd 的精髓 , 做类型检查,直接作用在domain对象之上
PageJumpOnce.scala
package com.dt.spak.SparkApps.pageLinks
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object PageJumpOnce {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setAppName("PageJumpOnce")
.setMaster("spark://192.168.189.1:7077").setJars(List(
// .setMaster("local[5]").setJars(List(
"/usr/local/spark-1.6.1-bin-hadoop2.6/lib/mysql-connector-java-5.1.13-bin.jar",
"/usr/local/IMF_testdata/PageJumpOnce.jar"))
val sc = new SparkContext(sparkConf)
val data = PageUtils.getData(sc)
val resolvedTask = PageUtils.parseArgsFromUser(args)
val aggregated = PageUtils.aggerateOnSession(data, resolvedTask)
val pageSplited = PageUtils.aggeratePageSplit(aggregated)
PageUtils.getResult(pageSplited, resolvedTask).foreachPartition { partition =>
{
}
}
}
}
PageUtils.scala
package com.dt.spak.SparkApps.pageLinks
import org.apache.spark.SparkContext
import org.apache.spark.rdd.RDD
object PageUtils {
def getData(sc: SparkContext): RDD[String] = {
generateData(sc)
}
def generateData(sc: SparkContext): RDD[String] = {
/**
* 数据可以来自于流处理系统,也可以来自批处理系统
*
*/
// MapPartitionsRDD[(String,String)] //要是同一个包 org.apache.spark.rdd
sc.parallelize("I into Spark so much".split(" "))
}
def parseArgsFromUser(args: Array[String]): Long = {
0L
}
def aggerateOnSession(rdd: RDD[String], taskType: Long): RDD[String] = {
rdd
}
def aggeratePageSplit(rdd: RDD[String]): RDD[String] = {
rdd
}
def getResult(rdd: RDD[String], taskType: Long): RDD[String] = {
rdd
}
}
相关文章推荐
- 大数据Spark “蘑菇云”行动补充内容第69课: Spark SQL案例之分析电影评分系统.
- 大数据Spark “蘑菇云”行动补充内容第70课: Spark SQL代码实战和性能调优 4个spark sql调优技巧有用!!!!
- 大数据Spark “蘑菇云”行动前传第2课:Scala零基础实战入门的第一堂课及如何成为Scala高手
- 大数据Spark “蘑菇云”行动第100课:Hive性能调优之企业级Join、MapJoin、GroupBy、Count、数据倾斜彻底解密和最佳实践
- 大数据Spark “蘑菇云”行动前传第22课:Scala集合和高级函数操作实战及Spark源码鉴赏.
- 大数据Spark“蘑菇云”行动-第26课:Scala的核心力量和黄金定律
- 大数据Spark “蘑菇云”行动第80课:Spark GraphX 综合案例分析与实战
- 大数据Spark “蘑菇云”行动第99课:Hive性能调优之企业级Mapper和Reducer调优深度细节解密 参数配置
- 大数据Spark “蘑菇云”行动前传第14课Scala集合上的函数式编程实战及Spark源码鉴赏
- 大数据IMF传奇行动绝密课程第73课:Spark SQL Thrift Server实战
- 大数据Spark “蘑菇云”行动第84课:Hive配置和实战第一课
- 大数据Spark “蘑菇云”行动第95课:Hive安全解析和实战等
- 大数据Spark “蘑菇云”行动第52课: Spark大型项目广告点击项目数据建模 项目!!!大项目!!!超大型大数据项目!!!
- 大数据IMF传奇行动绝密课程第67课:spark SQL案例综合实战
- 大数据Spark “蘑菇云”行动第41课:Spark编程实战之join、cogroup、cartesian深度解密
- 大数据Spark “蘑菇云”行动第64课: 页面跳转功能分析与架构 A、B、C页面之间跳转率的计算方法
- 大数据Spark “蘑菇云”行动第38课:Spark中Shuffle详解
- 大数据spark 蘑菇云行动前传 第1课:大数据时代的黄金语言scala
- 大数据IMF传奇行动绝密课程第61课:Spark SQL数据加载和保存内幕深度解密实战
- 大数据Spark “蘑菇云”行动第57课: Spark 2.0.1稳定版本解析及广告点击案例数据库和动态黑名单过滤代码