1.spark模块

--------------------------------------

  (1)Spark Core      //核心库

  (2)Spark SQL      //核心库

  (3)Spark Streaming    //准实时计算

  (4)Spark MLlib      //机器学习库

  (5)Spark graph      //图计算

2.Spark集群的运行

------------------------------------------

  1.local          //本地模式

  2.standalone    //独立模式

  3.yarn         //yarn模式

  4.mesos      //mesqs

3.start-all.sh    //spark集群的启动命令

----------------------------------------------

  start-master.sh   //RPC端口  7077

  start-slaves.sh  spark://s201:7077

4.webui端口

-------------------------------------------------

  http://s201:8080

  本地模式下:4040

5.SparkContext:

---------------------------------------------------------

  到spark集群的连接。主要入口点都从这个地方来进

SparkConf conf = new SparkConf();
conf.setAppName("WordCountJava");
conf.setMaster("local");
JavaSparkContext sc = new JavaSparkContext(conf);
//RDD===>Spark的核心类 R:Resilient D:distributed dataset弹性分布式数据集
JavaRDD<String> rdd1 = sc.textFile("d:/scala//hello.txt");
//压扁,按空格进行切割,对这一行进行切割
val rdd2 = rdd1.flatMap(line=>line.split(" "));
val rdd3 = rdd2.map(word=>(word,1));
val rdd4 = rdd3.reduceByKey(_ + _);
val list = rdd4.collect();
list.foreach(e=>print(e));    //通过高阶函数来进行循环

spark

----------------------------------------

  基于hadoop的mr,对hadoop模型扩展,高效实用MR。包括交互式查询和流计算,内存型集群计算,提高app处理速度

spark特点:

------------------------------------

  (1)速度,在内存中存储中间结果

  (2)支持多种语言

  (3)内置了80多种高级算子

  (4)高级分析:MR,SQL Streamming / mllib /graph

spark模块

-----------------------------------------

  (1)core    //通用执行引擎,提供内存计算和对外部数据集的引用

  (2)SQL    //构建核心core模块之上,引入新的抽象SchemaRDD,提供了结构化支持和半结构化支持

  (3)Streaming  //小批量流计算。RDD弹性分布式数据集

  (4)MLlib    //机器学习库

RDD

-------------------------------------------------

   是spark的基本数据结构,是不可变数据集。在RDD中的每个数据集都被分成逻辑分区,分区之后就可以在集群的不同节点上进行计算,每个分区可以在集群节点上进行计算。可以包含任何java类型、scala类型、python类型以及自定义类型。RDD是只读的分区记录。RDD具有容错机制。

   创建RDD的方式:(1)并行化一个现有的集合。hadoop花费90%的时间用于读写操作。

             内存处理计算,在job间进行数据共享。内存的IO速度高于网络和disk的10倍到100倍之间。

              spark使用分布式内存来存储中间结果,然后将这些结果存储在磁盘上

              RDD内部包含5个主要的属性:

              -----------------------------------------------------

                (1)分区列表

                (2)针对每个切片的计算函数

                (3)对其他rdd的依赖列表

                (4)可选,如果是KeyValueRDD的话还可以带一个分区类

                (5)可选,首选块位置列表(hdfs block location)

    

RDD变换
------------------
返回指向新rdd的指针,在rdd之间创建依赖关系。每个rdd都有计算函数和指向父RDD的指针。

map() //对每个元素进行变换,应用变换函数
//(T)=>V

filter() //过滤器,(T)=>Boolean
flatMap() //压扁,T => TraversableOnce[U]

mapPartitions() //对每个分区进行应用变换,输入的Iterator,返回新的迭代器,可以对分区进行函数处理。
//Iterator<T> => Iterator<U>

mapPartitionsWithIndex(func) //同上,(Int, Iterator<T>) => Iterator<U>

sample(withReplacement, fraction, seed) //采样返回采样的RDD子集。
//withReplacement 元素是否可以多次采样.
//fraction : 期望采样数量.[0,1]

union() //类似于mysql union操作。
//select * from persons where id < 10
//union select * from id persons where id > 29 ;

intersection //交集,提取两个rdd中都含有的元素。
distinct([numTasks])) //去重,去除重复的元素。

groupByKey() //(K,V) => (K,Iterable<V>)

reduceByKey(*) //按key聚合。

aggregateByKey(zeroValue)(seqOp, combOp, [numTasks])
//按照key进行聚合
key:String U:Int = 0

sortByKey //排序

join(otherDataset, [numTasks]) //连接,(K,V).join(K,W) =>(K,(V,W))

cogroup //协分组
//(K,V).cogroup(K,W) =>(K,(Iterable<V>,Iterable<!-- <W> -->))
cartesian(otherDataset) //笛卡尔积,RR[T] RDD[U] => RDD[(T,U)]

pipe //将rdd的元素传递给脚本或者命令,执行结果返回形成新的RDD
coalesce(numPartitions) //减少分区
repartition //可增可减
repartitionAndSortWithinPartitions(partitioner)
//再分区并在分区内进行排序

RDD Action
------------------
collect() //收集rdd元素形成数组.
count() //统计rdd元素的个数
reduce() //聚合,返回一个值。
first //取出第一个元素take(1)
take //
takeSample (withReplacement,num, [seed])
takeOrdered(n, [ordering])

saveAsTextFile(path) //保存到文件
saveAsSequenceFile(path) //保存成序列文件

saveAsObjectFile(path) (Java and Scala)

countByKey() //按照key,统计每个key下value的个数.

spark集成hadoop ha
-------------------------
1.复制core-site.xml + hdfs-site.xml到spark/conf目录下
2.分发文件到spark所有work节点
3.启动spark集群
4.启动spark-shell,连接spark集群上
$>spark-shell --master spark://s201:7077
$scala>sc.textFile("hdfs://mycluster/user/centos/test.txt").collect();

spark(2)的更多相关文章

  1. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  2. Spark RDD 核心总结

    摘要: 1.RDD的五大属性 1.1 partitions(分区) 1.2 partitioner(分区方法) 1.3 dependencies(依赖关系) 1.4 compute(获取分区迭代列表) ...

  3. spark处理大规模语料库统计词汇

    最近迷上了spark,写一个专门处理语料库生成词库的项目拿来练练手, github地址:https://github.com/LiuRoy/spark_splitter.代码实现参考wordmaker ...

  4. Hive on Spark安装配置详解(都是坑啊)

    个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/p/a7f75b868568 简介 本文主要记录如何安装配置Hive on Sp ...

  5. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  6. Spark踩坑记——初试

    [TOC] Spark简介 整体认识 Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apach ...

  7. Spark读写Hbase的二种方式对比

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 一.传统方式 这种方式就是常用的TableInputFormat和TableOutputForm ...

  8. (资源整理)带你入门Spark

    一.Spark简介: 以下是百度百科对Spark的介绍: Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方 ...

  9. Spark的StandAlone模式原理和安装、Spark-on-YARN的理解

    Spark是一个内存迭代式运算框架,通过RDD来描述数据从哪里来,数据用那个算子计算,计算完的数据保存到哪里,RDD之间的依赖关系.他只是一个运算框架,和storm一样只做运算,不做存储. Spark ...

  10. (一)Spark简介-Java&Python版Spark

    Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...

随机推荐

  1. vector利用swap()函数进行内存的释放

    首先,vector与deque不同,其内存占用空间只会增长,不会减小.比如你首先分配了10,000个字节,然后erase掉后面9,999个,则虽然有效元素只有一个,但是内存占用仍为10,000个.所有 ...

  2. Redis配置文件全解

    基本配置 port 6379  # 监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接. daemonize no #是否以后台进程启动 datab ...

  3. 从零开始,编写简单的课程信息管理系统(使用jsp+servlet+javabean架构)

    一.相关的软件下载和环境配置 1.下载并配置JDK. 2.下载eclipse. 3.下载并配置apache-tomcat(服务器). 4.下载MySQL(数据库). 5.下载Navicat for M ...

  4. Oracle数据库表空间查看和更改

    set linesize 200  --设置输出一行字符个数为200 1.查看表空间名称和大小(单位MB) SELECT t.tablespace_name, round(SUM(bytes / (1 ...

  5. es索引基本操作(2)之 索引映射(mappings)管理和索引库配置管理(settings)

    1:索引的映射管理 elasticsearch中的文档等价于java中的对象 , 那么在java对象中有字段(比如string.int.long等): 同理在elasticsearch索引中的具体字段 ...

  6. 【重点突破】—— UniApp 微信小程序开发官网学习Two

    一.使用Vue.js注意事项 Vue.js在uni-app中使用的差异: 新增:uni-app除了支持Vue实例的生命周期,还支持应用启动.页面显示等生命周期 受限:发布到H5时支持所有vue的语法, ...

  7. 服务器端-W3Chool:服务器脚本教程

    ylbtech-服务器端-W3Chool:服务器脚本教程 1.返回顶部 1. 服务器脚本教程 从左侧的菜单选择你需要的教程! SQL SQL 是用于访问和处理数据库的标准的计算机语言. 在本教程中,您 ...

  8. RESR API (一)之Requests

    Requests 如果您正在做基于REST的Web服务,您应该忽略request.POST. - Malcom Tredinnick,Django开发团队 REST框架的Request类扩展了标准的H ...

  9. IntelliJ IDEA 配置 Hadoop 源码阅读环境

    1.下载安装IDEA https://www.jetbrains.com/idea/download/#section=windows 2.下载hadoop源码 https://archive.apa ...

  10. 【HANA系列】SAP HANA SQL获取本周的周一

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL获取本周 ...