- 博客(17)
- 资源 (1)
- 问答 (3)
- 收藏
- 关注
原创 Spark物理计划和CBO和AQE
1.Spark本身其实并没有实现成本模型,目前一个逻辑计划可能生成多个物理计划,Spark源码直接调用.next来获取列表的第一个物理计划。只是列表的顺序是按照经验值排序的,比如broadcastjoin排序在sortmergejoin之前2.cbo是基于数据静态信息统计,以及抽样数据进行成本估算实现的。这部分代码在catalsy其实是属于生成逻辑计划的部分。还是以broadcastjoin举例。select * from a join b on a.key = b.key where b.va
2021-12-01 16:30:33 1379
原创 linux服务器查看公网IP信息的方法
curl ifconfig.me在linux系统中输入上述的命令,可以查看到本机连接的公网信息;如果该命令无效,可以使用下面一个命令,也同样可以获得对应的信息curl cip.cc
2021-11-24 17:17:39 2248
原创 spark3和hbase交互,hbase-connectors
jar包需要自己编译,目前官网没有git clone https://github.com/apache/hbase-connectors.gitmvn -Dspark.version=3.1.2 -Dscala.version=2.12.10 -Dscala.binary.version=2.12 -Dhbase.version=2.2.7 -Dhadoop.profile=3.0 -Dhadoop-three.version=3.3.1 -DskipTests -Dcheckstyle.ski
2021-08-13 16:59:25 576 1
原创 分布式bitmap的思想和实现
特定场景可以做到百亿数据查询在秒级响应分布式位图:https://www.pilosa.com/blog/range-encoded-bitmaps/http://pages.cs.wisc.edu/~jignesh/cs564/notes/lec06-BitbasedIndexing.pdf
2021-05-26 17:47:20 220
原创 Spark开发规范(scala版)
个人总结,供参考,若有错误,欢迎指正Spark官网:http://spark.apache.org/Spark参数:http://spark.apache.org/docs/latest/configuration.html0.参照《阿里java开发手册》1.对于确定长度的数组,用模式匹配来获取每一位的数据正例:val Array(name,age) = x.split(",")反例: val array = x.split(","); val name = array(0); val.
2021-03-24 15:16:11 1387
原创 万亿级别的shuffle量,Spark SQL 调优
接了一个业务方面的Spark Sql需求,2个大表join.20e 和90e数据join,无其他复杂逻辑,按固定字段join。由于发生了叉乘。中间结果达到上万亿,12T数据量。Task很容易失败,查看具体LOG,报一些经典shuffle异常,比如timeout, shuffle lost location。调优思路:让每个task处理更少的数据量(提高并发),减少GC时间,提高程序稳定性(retry和timeout参数配置),shuffle系列参数1.先查看Spark Web Ui.
2020-12-10 14:37:55 808
原创 hive on spark。beeline指定队列和设置参数
今天hive引擎从tez迁移到了spark。希望通过beeline指定队列和参数。beeline -u 'jdbc:hive2://host:port?mapreduce.job.queuename=queue;spark.executor.instances=5;spark.executor.cores=1;spark.executor.memory=4G' -n username;
2020-09-16 18:22:01 4382
原创 spark如何合理的分配资源(executor-memory,num-executors,executor-cores)
以下为经验之谈,结合个人对spark框架的理解,如有错误,欢迎指正。以yarn为例:一。executor-memory,在集群资源允许的情况下,当然越多越好,个人建议上限为单个containers最大值的75%。二。num-executors和executor-cores,由于执行任务的并发数=num-executors * executor-cores 。所以这一点经常会思考是100*1好,还是50*2比较好。1.假设shuffer压力不大,①在数据分布均匀,executor-memo
2020-06-30 15:42:54 2334 2
转载 spark的task分布不均匀,某些executor没有领取任务
今天执行的一个spark job的,共计有30000个任务,分配了100个executor,但是大部分任务都分布在了某些executor上。有些excutor只执行了1个任务。经查资料与spark数据本地化有关。先说解决方案:提交任务时候加参数 --conf spark.locality.wait=0原文链接:https://blog.csdn.net/zhouyan8603/article/details/841971901.概念:task在执行前都会获取数据的分区信息进行分配,总是.
2020-06-30 15:18:41 3577 3
原创 spark读取parquet文件,分配的任务个数
假设path为一个parquet文件目录,该目录下有64个part。大小共100G,数据均匀分布,采用gz或snappy等不可分割的压缩算法。那么执行以下代码。会起多少个task呢?val df = spark.read.parquet(path)df.count博主以为gz文件不可分割,所以会起64个part。但是结果起了1000+个task。原因:parquet文件压缩是内部数据分块压缩,而不是整个压缩。也就是说所谓的不可分割指的是block不可分割。起的task数.
2020-06-01 18:59:48 1390
原创 Spark写入parquet,设置Repetition。解决org.apache.parquet.io.InvalidRecordException
自定义case class,采用以下方式生成parquet文件,其Repetition为optionalcase class Log(id:String)ds[Log].write.parquet(path)业务上,后面使用parquet文件要求Repetition为required。直接读取会报错。解决方式 :自定义schema,nullable参数设置为false,创建DF写入。val schema:StructType = StructType( Arra...
2020-05-16 12:09:52 943
原创 spark2.3.3消费kafka中的数据,与hive中的表做关联并写入elasticsearch6.5.3(spark structed streaming)
背景:本地物理机机房新建了一个大数据集群(cdh,spark2.3.3+hive3.0)旧集群环境:spark2.1.0+hive2.4.2新旧集群为内网访问。未参与集群的搭建,不知道配置文件目录,各种依赖的jar版本,端口等。elasticsearch的端口经过一层nginx转发。解决过程:①hive旧数据数据迁移:在旧的hive集群执行export table a.b pa...
2019-01-20 02:02:41 597
原创 python 发送带有附件的邮件
恩恩。。奇怪,刚才是用了另外一个账号发吗。。不管了反正都是新的。来新公司实习,需要一个发邮件的小工具来给自己用。之前没接触过python,百度结合领导给的参考代码总算写出来了。。之前没写过博客,这次也就当做个笔记吧。。import smtplibimport email.utilsfrom email.mime.text import MIM
2016-02-17 15:07:08 297
spark读取parquet的分区数量问题,blockSize?分割?
2020-06-01
spark2.3.3跨集群读取hive2.4.2
2019-01-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人