zoukankan      html  css  js  c++  java
  • 《OD学spark》20161022

    一、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

    特性: 外部数据源(接口) hiveparquetorcjsonxmljdbc svcsv......

    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

  • 相关阅读:
    python3内置函数大全
    字符串格式化及函数
    基础数据和编码
    python基本数据类型
    python基础
    python re模块
    python json模块
    python os模块
    python random模块
    python time模块
  • 原文地址:https://www.cnblogs.com/yeahwell/p/5987289.html
Copyright © 2011-2022 走看看