![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
文章平均质量分 54
胖胖学编程
这个作者很懒,什么都没留下…
展开
-
[spark]spark资源分配
(1*4即4个节点共4个executor)*4=16,总cpu为32线程 8/16=1/2。每个executor内存数=该节点可用的总内存数/该节点executor数=16G/1=19G(这里因为executor num实在太小,所以随便选了16)但是一般cpu:内存=1:2-1:4,阿里云封装的时候1CU = 1cpu+4G内存, 即1:4,该值是比较合理的。内存数与线程数不是严格按照1:2,或者1:4,这个需要看一下每个节点的可用资源,具体情况具体计算。这里可以看出来,内存数/线程数=16/4=4。原创 2023-02-06 17:09:46 · 2807 阅读 · 0 评论 -
[spark]spark的5种join策略(未总结)
https://baijiahao.baidu.com/s?id=1709308473224276897&wfr=spider&for=pc原创 2023-02-06 15:31:09 · 85 阅读 · 0 评论 -
[spark] spark SQL的AQE
AQE是Spark SQL的一种动态优机制,是Spark3才出现的。总体思想是动态优化和修改物理执行计划,利用执行结束的上游Stage的统计信息(主要是数据量和记录数),来优化下游stage的物理执行计划。AQE有三大特性原创 2023-02-06 15:25:48 · 775 阅读 · 0 评论 -
[spark]排序
排序的执行顺序:按照集合中元素的比较规则进行排序,如果集合中元素没有比较规则,则可以通过extends Ordered[] 并重写相应方法实现。和sortByKey的区别是:sortBy按照f:(T)=>K这个函数的返回值进行排序这使得sortBy使用起来比sortByKey更加灵活。numPartition:可以指定排序结果的分区数,默认排序结果的分区数是这个rdd的分区数。ascending:为true则按照升序排序,为false则按照降序排序,默认为true。函数的作用:按照key进行排序。原创 2022-10-27 11:35:11 · 1836 阅读 · 0 评论 -
[spark]action算子
spark job由action算子触发。原创 2022-10-27 11:05:18 · 577 阅读 · 0 评论 -
[spark]transformation算子
rdd1.cogroup(rdd2):将rdd1和rdd2按照他们相同的key进行分组,返回key,rdd1的value,rdd2的value组成的元组,在这个元组中._1是key,._2是(value1,value2),其中rdd1的value,rdd2的value都是迭代器,是相同key对应的值组成的迭代器。参数numPartitions:指结果RDD的分区个数,也可以不写参数,默认是和父RDD一样的分区数,返回值是一个元组,第一个值是key的值,第二个值是该key进行分组的value组成的迭代器。原创 2022-10-26 10:59:06 · 736 阅读 · 0 评论 -
[spark]三.常见知识点|job提交参数|配置优先级|deploy-mode|OOM
在代码中的SparkConf中配置参数具有最高优先级,其次是spark-submit或spark-shell的参数,最后是配置文件spark-default.conf。当程序在一个yarn Container里面超过了可用内存,就会出现OOM问题。原创 2022-10-24 16:50:42 · 800 阅读 · 0 评论 -
[Spark]二Spark性能调优|Spark任务监控|程序调优|资源调优
对Spark性能的调优离不开对任务的监控,只有在运行过程中,通过监控手段发现问题,才能迅速定位问题所在。SparkUI使用在运行Spark应用程序时,默认会在Driver节点的4040端口启动WebUI服务,通过此WebUI可对Spark的应用程序的Job划分、Stage划分、Task执行缓存的使用等各个方面进行了监控。在执行Shuffle操作时,Map端使用ExternalSorter对数据进行分组,按分区排序,如果内存不足,则会将内存中的数据写入磁盘,为后续数据迭代留出内存空间。原创 2022-10-20 17:19:00 · 1147 阅读 · 0 评论 -
[spark]一RDD的基本属性|RDD的缓存|RDD的容错机制|spark组件简介|spark运行模式|存储简介|spark job提交流程|SparkShuffle|什么是RDD|弹性|分区
一个Application就是用户编写的一个应用程序,在一个应用程序中,可能会多次获取计算结果(action算子)。在Spark中有很多需要存储的地方,如对RDD进行缓存,shuffle时map阶段数据的存储。广播变量时各节点对变量的存储等,这些数据的存储都离不开spark的存储模块:spark的存储模块将所有需要存储的数据进行了抽象,只要是需要存储的数据都成为block。每个block都有一个唯一的id进行标识,并且存储模块提供多种不同级别的存储,如内存存储,磁盘存储等。原创 2022-10-17 16:17:41 · 603 阅读 · 0 评论 -
java.lang.OutOfMemoryError: Unable to acquire 65536 bytes of memory,
出错代码:rdd.coalesce(1).saveAsTextFile(outpath)解决:将coalesce改成repartition即可原因:repartition会开一个shuffle将文件进行合并,所以他的上游还是多个partition并行运行的。而coalesce是直接用一个分区处理所有数据。...原创 2022-04-26 11:18:08 · 756 阅读 · 0 评论 -
[报错]Exception: Found duplicate column(s) in the data schema: `value`;
val value_path="file:///Users/kelisiduofu/Desktop/UIS/value1" val conf=new SparkConf().setAppName("UIS_TMP").setMaster("local[*]") val spark=SparkSession.builder().config(conf).getOrCreate() val frame1=spark.read.json(value_path) fra...原创 2022-04-21 14:23:09 · 2040 阅读 · 0 评论 -
spark跑hdfs集群的数据或者本地数据,都可以在idea内运行
设置local[*]即可原创 2022-04-14 17:11:36 · 553 阅读 · 0 评论 -
[spark]在spark中使用hive表
1.把hive-site.xml core-site.xml hdfs-site.xml 三个配置文件拷贝到spark的conf目录下2.然后还有一个mysql的驱动包(hive/lib里有)拷贝到spark的lib目录下3.输入$SPARK_HOME/bin/spark-sql4.如果启动sparkSQL的时候发现日志太多, 可以到conf目录下, 有一个log4j的文件, 里边可以改级别...原创 2022-01-19 11:26:46 · 1357 阅读 · 0 评论