Spark
青云游子
大数据开发工程师
展开
-
spark写入hive,字段不够长,会截断数据
spark写入hive,字段不够长,会截断数据。hive的字段都设置成 string 类型。原创 2024-01-31 15:29:27 · 154 阅读 · 0 评论 -
spark写hive的ORC表,count(*)没数据
使用spark向hive中插入数据,hive表是ORC表。解决办法:在后面加 limit 1 解决。然后查询数据,发现数据是164条。然后用SQL查询数量,结果是0。原创 2024-01-16 10:52:02 · 394 阅读 · 0 评论 -
spark报错:com.fasterxml.jackson.databind.JsonMappingException: Incompatible Jackson version: 2.9.0
解决办法。原创 2023-12-22 10:48:38 · 86 阅读 · 0 评论 -
Spark读取S3数据
参考:http://t.csdnimg.cn/9qRuN原创 2023-12-20 15:29:55 · 82 阅读 · 0 评论 -
spark默认的executor是多少
在spark-default.conf文件中配置。原创 2023-08-19 15:52:56 · 137 阅读 · 0 评论 -
Spark-任务怎么切分
(1)Application:初始化一个SparkContext即生成一个Application;(4)Task:一个Stage阶段中,最后一个RDD的分区个数就是Task的个数。(2)Job:一个Action算子就会生成一个Job;(3)Stage:Stage等于宽依赖的个数加1;原创 2023-08-01 18:57:06 · 329 阅读 · 0 评论 -
Spark-对RDD的理解
RDD的弹性主要体现在计算弹性,存储弹性,任务弹性,数据位置弹性。RDD是分布式弹性数据集。原创 2023-08-01 18:17:34 · 317 阅读 · 0 评论 -
Spark-统一内存模型
其中存储内存和计算内存可以动态占用,当己方内存不足对方空余则可占用对方的内存,计算内存被存储内存占用后可强制收回,存储内存被计算内存占用后不可强制收回,只能等待释放。Spark的内存模型分为4部分,分别是存储内存,计算内存,其他内存,预留内存;原创 2023-08-01 16:31:04 · 325 阅读 · 0 评论 -
Spark-SortShuffle原理
每个Task会先把数据发送到缓冲区中,缓冲区满了会排序溢写到临时文件,等到Task计算完成之后,会把这些临时文件合并成一个大文件,和一个index文件,文件内容是有序的,等到所有的Task计算完成之后,启动ReduceTask,拉取属于自己分区的数据进行计算。最后在每个Task中,将所有的临时文件合并,这就是merge过程,此过程将所有临时文件读取出来,一次写入到最终文件。在溢写磁盘前,先根据key进行排序,排序过后的数据,会分批写入到磁盘文件中。:减少了小文件,不排序,效率高。在不需要排序的场景使用。原创 2023-08-01 16:17:45 · 267 阅读 · 0 评论 -
Spark提交流程
客户端通过脚本将任务提交到yarn执行,yarn启动APPMaster,APPMaster启动Driver线程,Driver负责初始化SparkContext并进行任务的切分和分配任务,交给Executor进行计算。原创 2023-08-01 16:00:15 · 300 阅读 · 0 评论 -
Spark-分组TopN
Spark的分组TopN (1)自定义分区器,按照key进行分区,使不同的key进到不同的分区 (2)对每个分区运用spark的排序算子进行排序// 构造示例数据// 创建 JavaPairRDD// 自定义分区器,按照键进行分区// 对每个分区使用排序算子进行排序并获取 TopN 值// 指定要获取的 TopN 值的数量});// 打印结果sc.stop();// 自定义分区器@Overridereturn 3;// 指定分区数。原创 2023-07-04 20:07:29 · 382 阅读 · 0 评论 -
Spark-RDD的五大特性
只有对于(Key,Value)的RDD,才会有Partitioner,非(Key,Value)的RDD的Parititioner的值是None。默认值就是程序所分配到的CPU Core的数目(设置的最大core数)。【注】 RDD是只读的,要想改变RDD中的数据,只能创建一个新的RDD由一个RDD转换到另一个RDD,通过操作算子(map、filter、union、join、reduceByKey…RDD逻辑上是分区的,每个分区的数据是抽象存在的,计算的时候会通过一个compute函数得到每个分区的数据。原创 2023-06-15 10:54:33 · 911 阅读 · 0 评论