一、Spark Core

1. 什么是Spark Shuffle

Wide Dependencies

*ByKey: groupByKey,reduceByKey

关联操作:join,cogroup

窄依赖:

父RDD的每个分区的数据,仅仅只会给子RDD的一个分区。

Spark性能优化:

开发优化:

依据业务场景及数据,使用较好的RDD的方法

(1)能使用reduceByKey不要使用groupByKey

(2)适当的时候已经处理的数据RDD,进行重新分区

repartition

reduceByKey(func, numPartitions)

coalse

SCALA中的拉链编程

val rdd = sc.parallelize(List(1,2,3,4,5))

val rdd2 = sc.parallelize(List("aa", "bb", "cc", "dd", "ee"))

rdd.zip(rdd2)

rdd.zip(rdd2).collect

2. MapReduce Shuffle

Spark Stages

(1)ResultStage

Stage阶段运行Jobs输出结果

ResultTask

(2)ShuffleMapStage

Stage阶段的RDD会发生Shuffle过程,

ShuffleMapTask

每个Stage中的所有任务的逻辑处理相同(functions)

Spark Scheduler

RDD Objects -> DAGScheduler -> TaskScheduler -> Worker

二、Spark SQL

MapReduce -> Hive

SparkCore -> SparkSQL

1. SQL on Hadoop

(1)Hive

基础,数据仓库,Facebook开源,

(2)Presto

内存,Facebook,依赖于Hive MetaStore

国内:京东

(3)Impala

内存,Cloudera,依赖于Hive MetaStore

应用:电信、游戏

安装方式: RPM包,联网安装,包特别多;CM5.3.x安装CDH5.3.x,包含Impala,界面化安装

(4)Spark SQL

(5)Drill

1PB的数据进行分析查询-> 3s

(6)Kylin

麒麟框架,唯一一个由国人开源的大数据框架,提供中文文档,也是Apache顶级项目

大数据起源搜索引擎,发展于电商互联网,Google三大论文

大数据的前三驾马车: GFS、 MapReduce和BigTable

大数据的后三驾马车: Caffeine、Pregel(Pregel主要绘制大量网上信息之间关系的“图形数据库”)、Dremel

2. SparkSQL

DataFrame = RDD[Row]

封装所有数据,提供一系列方法进行操作。

SQLContext

spark-1.3.0 release

特性: 外部数据源(接口) hive\parquet\orc\json\xml\jdbc\tsv\csv\......

SparkSQL读取文件数据的内容

文件数据格式默认的是parquet格式

Hive引擎:

SQL->Parse(语法解析)->Logical Plan(逻辑计划)->优化LP->Pyhsical Plan(物理计划)

MapReduce

SparkCore

SHark = Spark on Hive   spark 1.0之前

Catalyst: Spark SQL引擎

1)替代Hive

shark

SparkSQL与Hive无缝对接继承

企业中开发经验

(1)Hive对要分析的数据进行ETL操作

数据仓库

(2)SparkSQL进行分析

HiveQL:

val df = sqlContext.sql("select * from emp")

DSL:

val df = sqlContext.table("emp").select("empno")

Spark与Hive继承

从某个角度来说,SparkSQL读取Hive表中的数据,就是Hive客户端

(1)hive-site.xml

metastore存储在哪里?MySQL中

(2)数据库驱动包

3. Catalyst

SQL Text

------Parsing ----->Unsolved Logic Plan

------Binding & Anlyzidng -------> Logical Plan

------Optimizing -----> Optimized Logical Plan

------QueryPlanning ----> Physical Plan

4. 如何将依赖包放入到应用CLASSPATH虾米那

(1)--jars

(2)万能

SPARK_CLASSPTH

《OD学spark》20161022的更多相关文章

  1. 《OD学spark》20160925 Spark Core

    一.引言 Spark内存计算框架 中国Spark技术峰会 十二场演讲 大数据改变世界,Spark改变大数据 大数据: 以Hadoop 2.x为主的生态系统框架(MapReduce并行计算框架) 存储数 ...

  2. 《OD学spark》20160924scala基础

    拓展: Hadoop 3.0 NameNode HA NameNode是Active NameNode是Standby可以有多个 HBase Cluster 单节点故障? HBaster -> ...

  3. 《OD学hive》第四周0717

    一.Hive基本概念.安装部署与初步使用 1. 后续课程 Hive 项目:hadoop hive sqoop flume hbase 电商离线数据分析 CDH Storm:分布式实时计算框架 Spar ...

  4. 《OD学hadoop》20160903某旅游网项目实战

    一.大数据的落地点 1.数据出售 数据商城:以卖数据为公司的核心业务 2. 数据分析 百度统计 友盟 GA IBM analysis 3.搜索引擎 4. 推荐系统 mahout 百分比 5.精准营销 ...

  5. 《OD学HBase》20160821

    一.HBase性能调优 1. JVM内存调优 MemStore内存空间,设置合理大小 memstore.flush.size 刷写大小 134217728 = 128M memstore.mslab. ...

  6. 《OD学Oozie》20160807Oozie

    一.引入 MapReduce Job Hive 脚本任务 同一个业务:先后.定时调度 工作流: 定义工作流程 activity jbpm oozie: 大数据工作流定义与调度框架 专门定义与调度Map ...

  7. 《OD学Flume》20160806Flume和Kafka

    一.Flume http://flume.apache.org/FlumeUserGuide.html Flume是一个分布式的,可靠的,可用的,非常有效率的对大数据量的日志数据进行收集.聚集.移动信 ...

  8. 《OD学hive》第六周20160731

    一.hive的压缩 1. hadoop的压缩 1)为什么需要压缩 MapReduce的性能瓶颈:网络IO.磁盘IO 数据量:对于MapReduce的优化,最主要.根本就是要能够减少数据量 Combin ...

  9. 《OD学hadoop》第三周0709

    一.MapReduce编程模型1. 中心思想: 分而治之2. map(映射)3. 分布式计算模型,处理海量数据4. 一个简单的MR程序需要制定map().reduce().input.output5. ...

随机推荐

  1. php 简单笔记

    1.时间 $date1 = "2014-11-11"; echo date('Y-m-d',strtotime("$date1 +5 day")); //输出结 ...

  2. node.js+express+jade系列六:图片的上传

    安装npm install formidable 先把文件上传到临时文件夹,再通过fs重命名移动到指定的目录即可 fs.rename即重命名,但是fs.rename不能夸磁盘移动文件,所以我们需要指定 ...

  3. 【ACM-ICPC 2018 徐州赛区网络预赛】D.Easy Math 杜教筛

    代码 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 20000000; ...

  4. MYSQL root密码修改找回命令

    方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass ...

  5. Tensorflow Summary用法

    本文转载自:https://www.cnblogs.com/lyc-seu/p/8647792.html Tensorflow Summary用法 tensorboard 作为一款可视化神器,是学习t ...

  6. Eclipse或MyEclipse中给第三方jar包添加源码步骤

    0.目的 向web项目中添加mybatis源码. 1.项目结构如下 将mybatis的jar包添加到工程中 2.解压下载的mybatis压缩包(下载地址 https://github.com/myba ...

  7. [转]javascript单元测试

    1.      什么是单元测试 在计算机编程中,单元测试(又称为模块测试)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.程序单元是应用的最小可测试部件.在过程化编程中,一个单元就是单 ...

  8. BZOJ1707:[Usaco2007 Nov]tanning分配防晒霜

    我对贪心的理解:https://www.cnblogs.com/AKMer/p/9776293.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem ...

  9. 1.4 isAlive()方法

    方法isAlive()是判断当前线程是否处于活动状态. 线程代码: public class TestThread extends Thread{ @Override public void run( ...

  10. poj 1519 Digital Roots (计算根数字)

    一.Description The digital root of a positive integer is found by summing the digits of the integer. ...