spark
新手路上的程序员
这个作者很懒,什么都没留下…
展开
-
spark 整合kudu注意事项
kudu引擎暂不支持sparkSQL中 <、>、or 这些谓词下推,支持like,但仅限于“201907%”这种形式,不支持“201907%02”这种形式 使用SparkSQL读取Kudu表时,必须使用between或者in来指定range分区字段的范围,否则会变成全表扫描,效率极低!!! 插入数据、更新数据和删除行的df必须包含所有主键,主键不可为空 删除kudu分区会同时删除分区内的数据 ...原创 2021-01-14 11:37:08 · 221 阅读 · 0 评论 -
spark structure streaming + kie server
在drools workbench +kie server安装好了kie server并且发布了对应的项目。现在通过spark structure streaming+kie server实时为数据打标。项目地址项目中涉及到的地址信息都以XXX代替。数据流程图:原创 2020-06-22 16:29:58 · 149 阅读 · 0 评论 -
spark kafka Topic not present in metadata after 60000 ms
structstured streaming 结合kafka问题出在kafka加了kerberos认证在将数据写入kafka时需要加.option("kafka.security.protocol", "SASL_PLAINTEXT")原创 2020-05-13 22:25:21 · 11109 阅读 · 3 评论 -
Spark-Structured-Streaming 分组聚合笔记
1.直接group by+agg val hourLoginUserCount = weChatUserLoginInfo .union(mallBizuserLogin) .dropDuplicates("realUserId") .groupBy($"loginTimeHour") .agg(sum($"userCount").as("us...原创 2020-04-22 13:49:58 · 1144 阅读 · 0 评论 -
Spark编码和参数优化
编码优化:① RDD复用 ② RDD持久化 ③ 巧用 filter ④ 选择高性能算子 ⑤ 设置合并的并行度 ⑥ 广播大变量 ⑦ Kryo序列化 ⑧ 多使用Spark SQL ⑨ 优化数据结构 ⑩ 使用高性能库参数优化:① Shuffle调优 ② 内存调优 ③ 资源分配 ④ 动态资源分配 ⑤ 调节本地等待时长 ⑥ 调节连接等待时长 1 编码的优化1、RDD复用避免创建重复的RDD。在开发过程中要注意:对于同一份数据,..原创 2020-12-11 19:07:20 · 493 阅读 · 0 评论 -
Spark 数据倾斜优化
1.基本概念什么是数据倾斜 Task之间数据分配的非常不均匀数据倾斜有哪些现象Executor lost、OOM、Shuffle过程出错、程序执行慢 单个Executor执行时间特别久,整体任务卡在某个阶段不能结束 正常运行的任务突然失败大多数 Task 运行正常,个别Task运行缓慢或发生OOM数据倾斜造成的危害有哪些个别任务耗时远高于其它任务,轻则造成系统资源的浪费,使整体应用耗时过大,不能充分发挥分布式系统并行计算的优势 个别Task发生OOM,导致整体作业运行原创 2020-12-11 18:47:23 · 160 阅读 · 0 评论 -
spark BlockManager
BlockManager是一个嵌入在 Spark 中的 key-value型分布式存储系统,也是Master-Slave 结构的,RDD-cache、 shuffle-output、broadcast 等的实现都是基于BlockManager来实现的:shuffle 的过程中使用 BlockManager 作为数据的中转站 将广播变量发送到 Executor 时, broadcast 底层使用的数据存储层 如果对一个 RDD 进行了cache,CacheManager也是把数据放在了BlockMa原创 2020-12-11 18:33:49 · 336 阅读 · 0 评论 -
spark 内存管理演进
1.堆内内存与堆外内存 作为一个 JVM 进程,Executor 的内存管理建立在 JVM 的内存管理之上,Spark 对JVM 的堆内(On-heap)空间进行了更为详细的分配,以充分利用内存。同时,Spark 引入了堆外(Off-heap)内存,使之可以直接在工作节点的系统内存中开辟空间,进一步优化了内存的使用。堆内内存受到 JVM 统一管理,堆外内存是直接向操作系统进行内存的申请和释放。1.1堆内内存堆内内存的大小,由 Spark 应用程序启动时的 executor-memory 或s.原创 2020-12-11 18:20:00 · 98 阅读 · 0 评论 -
spark shuffle演进
1.Shuffle定义在 Spark 或 MapReduce 分布式计算框架中,数据被分成一块一块的分区,分布在集群中各节点上,每个计算任务一次处理一个分区,当需要对具有某种共同特征的一类数据进行计算时,就需要将集群中的这类数据汇聚到同一节点。这个按照一定的规则对数据重新分区的过程就是Shuffle。2.Spark Shuffle的两个阶段SparkShuffle分为Write和Read两个阶段,分属于两个不同的Stage,前者是Parent Stage的最后一步,后者是Child Stage的原创 2020-12-11 15:20:23 · 219 阅读 · 1 评论 -
spark yarn 提交流程
1.Client向RM提交请求,上传jar包到HDFS上2.RM在集群中选择一个NM,在其上启动AppMaster,在AppMaster中实例化SparkContext(Driver)3.AppMaster向RM注册应用程序并申请资源。RM监控AppMaster的状态直到AppMaster结束。4.AppMaster申请到资源后,与NM通信在Container中启动Executor进程5.Executor向driver反向注册,申请任务6.Driver对应用进行解析,最后将Task发送到Exe..原创 2020-12-09 11:14:16 · 1909 阅读 · 0 评论 -
spark源码分析一:spark join 操作何时是宽依赖,何时是窄依赖
问题来源:join 操作何时是宽依赖,何时是窄依赖测试代码:object JoinDemo { def main(args: Array[String]): Unit = { System.setProperty("hadoop.home.dir", "D:\\hadoop-2.9.2") val conf: SparkConf = new SparkConf().setAppName(this.getClass.getCanonicalName.init).setMaster(原创 2020-12-09 10:11:28 · 601 阅读 · 0 评论 -
spark livy session使用一
python调用livy session restfulAPI demo:import jsonimport reimport sysimport textwrapimport timeimport requestsdef extract_table_name_from_sql(sql_str): # remove the /* */ comments q = re.sub(r"/\*[^*]*\*+(?:[^*/][^*]*\*+)*/", "", sql_str)原创 2020-12-03 12:57:07 · 1234 阅读 · 0 评论 -
spark livy batch使用一
用python调用livy restfulAPI demo:import json, pprint, requests, textwrapimport time, syshost = 'http://localhost:8998'headers = {'Content-Type': 'application/json'}batchs_url = host + '/batches'print(batchs_url)data = {'file': '自定义.jar' , 'cla原创 2020-12-03 11:53:25 · 876 阅读 · 0 评论 -
spark 作业笔记一
1.累加器不支持自定义类型2.SparkSQL和Spark的计算性能差异来自于DataFrame3.df.select(rand())的作用是生成均为正数的浮点随机数原创 2020-11-11 09:15:54 · 134 阅读 · 0 评论 -
spark 问题笔记
1.在idea中运行报错:scala.Product.$init$(Lscala/Product;)V检查pom文件中scala的版本和idea中scala的版本是否一致 idea中scala版本为2.11解决办法:<artifactId>spark-core_2.12</artifactId> -> <artifactId>spark-core_2.11</artifactId>2.idea中java.io.IOException: ...原创 2020-10-22 12:48:21 · 378 阅读 · 0 评论