Spark

Apache Spark 2.2.0 中文文档
http://spark.apachecn.org/docs/cn/2.2.0/sparkr.html
在Spark中一个大文件会被有序的分为多个输入分片,每个分片对应一个分区,每个分区会作用一个分区编号,且分区编号也是有序,从0开始,当使用collect(算子)收集数据时,收集到Driver端的数据也是有序,顺序为分区的顺序。
Spark中任务存在的形式是一个序列化的类的实例,理解nodemanager与work的资源,可以通过配置设置每个nodemanage或worker需要资源,比如每个nodemanager或worker的core=2,memory=2048m等等。一个core启动一个线程,还有就是spark中–driver-memory内存设置主要是,当使用collect收集数据的时候,如果–driver-memory较小,一旦数据多大就会导致内存报表,数据丢失。
对于Spark广播变量,excutor会把变量地址的内存 返回给Driver端,由Driver将引用地址告诉Task,一起发送到Excutor端,然后调用value方法,通过引机会获取到变脸的内存地址。
spark的task就是实例,就是编译成二进制文件,就是java底层运行原理。
6.MEMORY_ONLY_2, MEMORY_AND_DISK_2, 等等
对于上述任意一种持久化策略,如果加上后缀_2,代表的是将每个持久化的数据,都复制一份副本,并将副本保存到其他节点上。这种基于副本的持久化机制主要用于进行容错。假如某个节点挂掉,节点的内存或磁盘中的持久化数据丢失了,那么后续对RDD计算时还可以使用该数据在其他节点上的副本。如果没有副本的话,就只能将这些数据从源头处重新计算一遍了,如果是磁盘(本地磁盘非hdfs上)。
spark中创建的函数实例(算子中传入的函数)采用是Lazy加载机制,只有被调用的时候才会类加载,然后加载到堆中,好比java单例模式中的懒汉式,当然也存在直接加载到内训中的。
注意:对于Object 中静态代码块必须的和前面的一行代码隔一行,就算前面一行加上注释也不行,不然就会作为前一行的一部分,可能会出现初始化失败
spark中不管是否会shuffle,RDD的分区数量是由前一个RDD决定,不重新分区就和上一RDD分区数量相等,重新分区的子RDD就以重新分区的数量为基准,join恩的话,是由RDD分区的数量由多的那个RDD分区的数量。
使用sparkSQL向hive的写数据时,不需要先使用hive创建一个表,SparkSQL会自动回在MySQL中记录一个表的描述信息。就是我们可以通过Hive创建表,同样夜歌通过SparkSQL创建表。
如何理解迭代式计算
举个例子吧 你可以这样理解 有一种机器假设它能做y=2x+1的运算 现在我给你一个数字1让你求3次叠代运算后的结果 你就可以把数字1放进机器 然后得到3这是1次叠代的结果 然后把3再放进去得到7这是2次叠代的结果 最后再把7放进去得到15这就是3次叠代的结果了 这么讲应该明白了吧
spark大数据架构初学入门基础详解
https://www.jianshu.com/p/0ba43c42100a
sqlserver中字段类型用bigint比int只是内存上消耗多一点,其他没影响吧
bigint 对应程序中的Int64, int 对应程序中的Int32
checkpoint需要重新启动一个job的原因,如果在计算得到数据的时候,进行写操作,那么后续的计算就会停止,而piline是
不允许暂停的。这种操作还为开发出来。
val broadcast_df_standard = sc.broadcast(df_operate.as(“t_base_phone_to_operate”))
SQL Server 2016:内存列存储索引
https://yq.aliyun.com/articles/425883
park的RDD的弹性体现在什么地方?------面试题
https://blog.csdn.net/u012036736/article/details/80214530
冰解的破-spark
https://www.jianshu.com/p/c364a32d4493
spark之调优
https://www.cnblogs.com/LHWorldBlog/p/8490357.html
https://www.jianshu.com/p/c0151f08b9f8
https://blog.csdn.net/u012102306/article/details/51637366
https://blog.csdn.net/databatman/article/details/53023818
spark之shuffle
https://www.jianshu.com/p/93c2462ed9e4
https://www.jianshu.com/p/b80aba1287cc
https://www.jianshu.com/p/0ddf3ae19b49
https://www.jianshu.com/p/f9f7bfa43978
spark之拉取数据
https://www.jianshu.com/p/cfa7dc8ce14e
spark之深入理解RDD
https://blog.csdn.net/u011094454/article/details/78992293
Spark 内存溢出 处理 及 优化
https://blog.csdn.net/zuolovefu/article/details/79024899
https://blog.csdn.net/yhb315279058/article/details/51035631
https://www.jianshu.com/p/914c8b511348
spark之串行,并行
https://www.jianshu.com/p/5fe79b67ea00
深入理解Spark 2.1 Core (二):DAG调度器的原理与源码分析
https://blog.csdn.net/u011239443/article/details/53911902#commentBox
Spark RDD深度解析-RDD计算流程
https://blog.csdn.net/weixin_40535323/article/details/82874525?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
https://www.cnblogs.com/candl/p/9604351.html
https://blog.csdn.net/jiangpeng59/article/details/53213694
chechkpoint
https://www.cnblogs.com/superhedantou/p/9004820.html
spark之job并行
https://www.jianshu.com/p/dc606daf8c87
Spark之seq
https://blog.csdn.net/bluejoe2000/article/details/77511733
REST,以及RESTful的讲解
https://blog.csdn.net/qq_21383435/article/details/80032375
spark之运行模式
https://www.cnblogs.com/nucdy/p/8523462.html
yarn之虚拟内存
https://blog.yoodb.com/sugarliny/article/detail/1307
YARN的Memory和CPU调优配置详解
https://blog.csdn.net/qq_25302531/article/details/80608210
https://blog.csdn.net/mnasd/article/details/81202908
YARN and MapReduce的内存优化配置详解
https://blog.csdn.net/qq_25302531/article/details/80608288
Spark高可用HA实战
https://blog.csdn.net/LV_ZFG/article/details/51858386
Spark的误解-不仅spark是内存计算,hadoop也是内存计算
Spark的天然优势–内存计算
https://blog.csdn.net/a545415/article/details/76997023
https://blog.csdn.net/blank1990/article/details/50251781
Spark(一): 基本架构及原理
https://blog.csdn.net/swing2008/article/details/60869183
Spark的运行架构分析(二)之运行模式详解
yarn之client模式不会下载jar包
https://blog.csdn.net/gamer_gyt/article/details/51833681
服务器和客户端的理解
https://blog.csdn.net/weixin_34060299/article/details/93721811
spark之内存详解
https://blog.csdn.net/pre_tender/article/details/101517789
https://www.aboutyun.com//forum.php/?mod=viewthread&tid=21951&extra=page%3D1&page=1&
Spark的广播变量和累加器使用方法代码示例
accumulate方法已经被弃用。
有sc.longAccumulator() 整数累加
sc.doubleAccumulator() 小数累加
https://blog.csdn.net/weixin_39966065/article/details/89713757
https://www.jb51.net/article/124914.htm
总结:Hive,Hive on Spark和SparkSQL区别
https://www.jianshu.com/p/a38215b6395c
SparkSQL中是由DataFrame是由RDD(row) + schema,而对于当使用row来封装数据的时候,实质是调用的
apply()方法。而apply方法的,而apply的参数类型就是一个参数可变(可变参数底层本身就是一个数组)的Any类型方法, 方法是new Generic(.toArray)而且把传入的数据调用.toArray,显示的转变为一个Any类型Array,但是这数据却是存储在地方是在堆外内存中,那么就是字节码了,纯数据了(读取数据处理后肯定要放在内存中呀),不存在数据类型了。而只有jvm堆内存中才能存储对象,那么强大的schema就闪亮登场了,也就是StructType,作为对象存储在jvm的堆内存中,保存了schema信息,字段名呀,还有数据类型,以及每一个字段数据的位置信息呀。
当DataFrame转换成rdd的时候,同样会运用到schema,我们可以将Any类型转换成对应的类型,但是不是随便强转的,就像一个接口引用指向了实现他的子类,那么这么接口应是不用随便转为他说实现的子类。
SparkSQL执行原理
https://blog.csdn.net/u014034497/article/details/90711082
antlr
https://www.jianshu.com/p/03412b06672e
https://blog.csdn.net/cyxinda/article/details/78254217
https://blog.csdn.net/yuexiang321/article/details/52770283#commentBox
Spark数据本地化
https://www.cnblogs.com/jxhd1/p/6702224.html?utm_source=itdadao&utm_medium=referral
https://blog.csdn.net/zhouyan8603/article/details/84197190
Spark Sql 之 cacheTable
https://www.jianshu.com/p/a71084447b1e
spark中Dataset的的saveAsTable方法可以把数据持久化到hive中,其默认是用parquet格式保存数据文件的,若是想让其保存为其他格式,可以用format方法配置。
save操作:主要用于将DataFrame中的数据保存到文件中默认为parquet存储格式
Hive默认的存储格式为TextFile()
在SQL中,index是从1开始的。
数据库事务详解
https://www.jianshu.com/p/aa35c8703d61
https://www.cnblogs.com/lz0925/articles/10761771.html
SQL事务回滚
https://www.jianshu.com/p/64f7a758b8b8
简述sparkSQL中RDD、DataFrame、DataSet三者的区别与联系
https://www.jianshu.com/p/c3b262349226
每个任务都有一个schema,任务已启动都就已经存在这个schema,这个schema是有rdd告诉他的,那么就知道他所拉取的数据的结构信息
https://www.jianshu.com/p/147da84c1b29
https://www.jianshu.com/p/8763ff5c471c
RDD之支持粗粒度的读和写,不像dataframe与dataset支持细粒度的读写请求。
SparkSQL
https://www.jianshu.com/p/9e3915bad1f8
https://www.jianshu.com/p/9c9ede647068
https://www.jianshu.com/p/891b3bcd437c
https://www.cnblogs.com/yczysu/articles/5207644.html
自:为什么我们的dataset调用dsl或sql语句后,最终放回的是DataFrame:
有源码可知DataFrme的DataSet[ROW];
不论是DateSet[T]还是DataFrame反回的数据类型和个数是不确定的,那么封装数据就是一个问题了,那么SparkSQL就是使用Row类封装数据,Row的地城实际使用一个Array[Any]类型的数组来封装我们的数据,那么我
们的可以用一个可变的数组来存储,然就转为array,把数组封装到GenericRow的中,而Row的apply方法就是new GenericRow,同时Row是一个object对象,是一个单列对象,在内存中存在,Row存在许多方法让我们从数组中取数据,但是因为是Any类型的数组,那么在取数据的时候,编译的时候是无法检测数据类型的,那么也就导致dataframe是弱类型的。而DataSet就结合了dataframe和rdd,DataSet虽然是强类型的,在内存中以自定义的类型的对象封装数据,但是我们必须得使用一个encorder来实现对这个类的解构,得到schema,同时要具备序列化,而序列化的原因就在于shuff的时候需要序列化数据,而与RDD不同的时,我们只对数据进行序列化,而不想RDD需要使用java对象的方式序列化整个对象。同样对DataSet进行缓存的时候,缓存的数据存储在off-heaad以二进制的形式(纯数据)同样需要序列化,而对于每个任务初始化的时候,都存在一个初始的schema,
随着序列化发送到executor端,通过这么schem就知道自己需要拉取的数据的结果化信息。同样对于新生成的(dataframe)的schema,是从上一DataSet的schema得到的,原本字段的结构信息也是封装在数组中。而对于RDD是吧数据存储在对象中的,而对于内部的结果是无法得知的,而DataSet存在schema,那么就了解所要处理数据的结果信息,应此Catalyst相当于,已经对整个作业都了如指掌了,而会对整个作业进行优化,选择最佳的处理方式。
DataSet就是Rdd[T] + schema, 在内存中数据还是一个封装到T对象中,只是多了一个schema,有了schema就知道处理数据的类型了,
SparkSQL 学习笔记----自动分区推断
https://blog.csdn.net/weixin_42102379/article/details/89515707
虚拟内存的作用
https://blog.csdn.net/suanzhaogao/article/details/72810797
spark之JVM调优二:调节Executor堆外内存
https://blog.csdn.net/m0_37294838/article/details/91410637
BlockManager架构原理、运行流程图和源码解密
https://blog.csdn.net/qq_26222859/article/details/51375239
Spark源码分析之分区器的作用
https://www.cnblogs.com/xing901022/p/6718642.html
Spark任务提交执行全流程详解
https://blog.csdn.net/weixin_43637653/article/details/84108493?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
编写程序向HBase写入数据
https://www.cnblogs.com/freebird92/p/8886535.html
https://blog.csdn.net/weixin_38653290/article/details/85641247

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值