SPARK
spark的原理介绍,及使用
飞天小老头
这个作者很懒,什么都没留下…
展开
-
Spark读取Excel文件
具体的代码模板大概就这些内容了,要根据实际的开发需求进行逻辑变更或配置变更.Spark读取Excel文件需要先添加对应的第三方库。将上面的依赖添加上即可。原创 2023-04-25 15:47:33 · 1931 阅读 · 0 评论 -
Spark中cache、persist、checkpoint三者的比较
在Spark的数据处理过程中我们可以通过cache、persist、checkpoint这三个算子将中间的结果数据进行保存,这里主要就是介绍这三个算子的使用方式和使用场景1. 三者的使用1.1 cache的讲解与使用 cache算子可以将spark任务的中间结果数据缓存到内存当中,用以优化数据处理的时效性,这里结合代码进行讲解。 首先这里准备好数据文件# 通过命令我们可以看到数据文件有4592639 行[root@lx01 bin]# wc -l /root/log-t.txt4592原创 2022-04-23 20:41:24 · 2631 阅读 · 0 评论 -
spark-submit提交任务报错:java.sql.SQLException:No suitable driver
提交spark任务时一直报错:No suitable driver提交任务命令如下spark-submit \--driver-class-path /opt/sparkJob/mysql-connector-java-5.1.47.jar \--master yarn \--deploy-memory cluster \--driver-memory 4G \--executor-memory 2G \--total-executor-cores 12 \--class com.xxx.原创 2022-04-13 21:09:36 · 2298 阅读 · 4 评论 -
Spark SQL小文件处理
使用spark sql时候,小文件问题是避免不了的,当我们从hive中读取数据表时,默认就是200个分区,如果不加以处理,当我们在将数据写入到表中时,就会形成200个小文件,这样对于hdfs来说是很不友好的,会加重namenode的压力.针对于spark sql有三种方式可以对小文件的问题进行处理设置spark sql的shuffle的分区数量.使用coalesces算子使用repartition算子未设置分区数量前从hive中读取数据,分区去量如下图通过图片我们可以看到,就是默认的分区原创 2021-12-15 01:44:55 · 1119 阅读 · 0 评论 -
SparkCore中的combineByKey的使用
在我们编写SparkCore代码时通常使用的聚合类算子有reduceByKey、aggregateByKey、foldByKey,但是这三个算子底层都调用了combineByKey算子,这里就介绍一下如何使用combineByKey首先我们看一下使用这个算子要传入哪些参数,如下图所示这里主要以红框中的作为使用参数讲解通过上图我们可以看出使用这个算子我们最少要传入三个函数作为参数这里在代码中对三个参数进行讲解// 创建一个值为Tuple2类型的数组val arr = Array(("To原创 2021-12-10 01:12:53 · 395 阅读 · 0 评论 -
Spark中map和mapPartitions的区别
map和mapPartitions的区别map和mapPartitions的本质区别map是对RDD中的每个元素进行操作,源码如下所示 /** * Return a new RDD by applying a function to all elements of this RDD. */ def map[U: ClassTag](f: T => U): RDD[U] = withScope { val cleanF = sc.clean(f) new Map原创 2021-12-03 01:14:59 · 2455 阅读 · 0 评论 -
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
在写完spark程序后,进行本地调试报了下面这个异常Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties21/09/18 12:51:53 INFO SparkContext: Running Spark version 3.0.021/09/18 12:51:53 ERROR Shell: Failed to locate the winutils binary in the hadoop bi原创 2021-09-18 13:22:37 · 255 阅读 · 0 评论 -
Exception in thread “main“ java.lang.NoClassDefFoundError: org/apache/spark/SparkConf
在本地调试运行spark程序时,报错Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/spark/SparkConf,这个错误就是程序在运行时找不到类Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/SparkConf at cn.jin.spark.JavaLambdaWordCount.main(JavaLam原创 2021-09-18 13:08:29 · 5961 阅读 · 0 评论 -
spark提交jar包到集群中
这里简单做一个wordcount代码,代码如下object WordCount { def main(args: Array[String]): Unit = { // 创建SparkConf val conf = new SparkConf().setAppName("WordCount") // 创建SparkContext val sc = new SparkContext(conf) // 通过SparkContext创建RDD val line原创 2021-09-15 23:26:52 · 917 阅读 · 0 评论 -
Spark性能调优
日常工作使用spark处理业务问题中不可避免的都会碰到需要对spark的性能进行调优的情况,这里就介绍一下对spark的性能调优。1. 调节内存分配 因为在spark中堆内存被划分为两块,一块是给RDD的cache和persist操作RDD数据缓存使用的,另一块是给spark算子函数使用的,函数中自己存放的对象.在默认情况下,分配给cache内存占比为0.6,但是有些cache时候并不需要这么大内存空间,反而task算子中创建的对象有很多,这个时候就会发生spark算子函数使用的空间不够用,而RD原创 2021-01-30 00:47:15 · 160 阅读 · 0 评论 -
创建DataFrame的多种方式
1. 通过RDD[Row]和StructType创建import org.apache.spark.rdd.RDDimport org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}import org.apache.spark.sql.{DataFrame, Row, SparkSession, types}/** *通过RDD[Row]和StructType创建DataFrame */ob原创 2020-07-16 20:41:45 · 933 阅读 · 0 评论 -
Spark求TopN的多种方式
1. 将数据加载到内存中去TopNimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}/** * 将数据加载到内存中进项排序取topn */object Teacher01 { def main(args: Array[String]): Unit = { // 创建配置参数对象,进行参数配置 val conf = new SparkConf().setAppName原创 2020-07-14 22:45:20 · 2655 阅读 · 0 评论 -
SparkRPC通信机制
主节点启动从节点启动从节点启动后,会向主节点注册信息,信息内容包括自己的cpu资源,内存资源等资源信息,还会向主节点注册自己的身份信息Master接收到Worker的注册信息后,会将Worker的注册信息存储到内存当中,通过Map集合以键值对的形式进行存储,存储成功后,会将注册成功的信息返回给Worker,告诉从节点已经注册成功在Master和Worker正常通信后,Worker会通过心跳机制不断的向Master报活,Master也会通过心跳机制来检测Worker是否还存活,如果..原创 2020-06-28 11:53:46 · 240 阅读 · 0 评论
分享