
Spark技术经验
Spark技术经验总结、分享。
郝少
爱出者爱返,福往者福来。
展开
-
【Spark】dataFrame存储Hive ORC格式并显示为NULL
dataFrame存储Hive ORC格式并显示为NULL问题原创 2023-05-15 10:46:59 · 704 阅读 · 0 评论 -
【Spark】表记录分组去重
表记录分组去重,开窗函数原创 2023-05-05 10:42:20 · 312 阅读 · 0 评论 -
【Hive|Spark】spark写入hive表存储格式问题
The format of the existing table default.student is `HiveFileFormat`. It doesn't match the specified format `OrcFileFormat`.;原创 2022-10-14 17:46:17 · 3051 阅读 · 0 评论 -
【Spark】concat、concat_ws函数的使用
concat、concat_ws函数的使用原创 2022-09-23 09:53:30 · 4458 阅读 · 0 评论 -
【Spark】RDD、DataFram、DataSet的比较与使用
RDD、DataFram、DataSet的比较与使用原创 2022-09-20 15:36:12 · 1449 阅读 · 0 评论 -
【Spark】spark对mysql的操作
spark对mysql的写入、读取、更新操作技巧原创 2022-09-14 16:42:37 · 3350 阅读 · 0 评论 -
【IDEA】spark-scala快速返回数据类型的方法
spark-scala快速返回数据类型的方法原创 2022-08-24 14:09:47 · 800 阅读 · 0 评论 -
【Spark】JDBC单条或批量操作MySql
JDBC单条或批量操作MySql原创 2022-08-22 16:19:45 · 1114 阅读 · 0 评论 -
【spark】开发过程中遇到的问题
spark开发过程中遇到的问题原创 2022-08-24 11:49:32 · 271 阅读 · 0 评论 -
【Spark】通过livy2提交spark任务
一、向livy2提交spark自带例子[root@ambari1 Test]# curl -X POST --data '{"file": "/home/Test/spark-examples_2.11-2.2.0.2.6.3.0-235.jar", "className": "org.apache.spark.examples.SparkPi","args":["100"]}' -H "Content-Type: application/json" 192.168.xxx.xx3:8999/batc原创 2021-10-27 16:45:11 · 1499 阅读 · 0 评论 -
【Spark】性能优化之数据倾斜调优
调优概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能。数据倾斜发生时的现象绝大多数task执行得都非常快,但个别task执行极慢。比如,总共有1000个task,997个task都在1分钟之内执行完了,但是剩余两三个task却要一两个小时。这种情况很常见。原本能够正常执行的Spark作业,某天突然报出OOM(内存溢出)异常,观察异常栈,是我们写的业转载 2021-10-15 11:36:13 · 248 阅读 · 0 评论 -
【Spark】提交yarn常用配置结构
spark-submit \ --master yarn \ --deploy-mode cluster \ --driver-cores 4 \ --driver-memory 2g \ --executor-cores 4 \ --num-executors 100 \ --executor-memory 6g \ --name taskName\ --conf spark.default.parallelism=1000 \ --conf spark.s.原创 2021-10-14 15:29:06 · 180 阅读 · 0 评论 -
【Spark】性能优化之资源调优
调优概述在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利用集群资源,作业运行会极其缓慢;或者设置的资源过大,队列没有足够的资源来提供,进而导致各种异常。总之,无论是哪种情况,都会导致Spark作业的运行效率低下,甚至根本无法运行。因此我们必须对Spark作业的资源使转载 2021-10-14 14:26:00 · 192 阅读 · 0 评论 -
【Spark】性能优化之开发调优
调优概述Spark性能优化的第一步,就是要在开发Spark作业的过程中注意和应用一些性能优化的基本原则。开发调优,就是要让大家了解以下一些Spark基本开发原则,包括:RDD lineage设计、算子的合理使用、特殊操作的优化等。在开发过程中,时时刻刻都应该注意以上原则,并将这些原则根据具体的业务以及实际的应用场景,灵活地运用到自己的Spark作业中。原则一:避免创建重复的RDD通常来说,我们在开发一个Spark作业时,首先是基于某个数据源(比如Hive表或HDFS文件)创建一个初始的RDD;接转载 2021-10-14 14:15:06 · 103 阅读 · 0 评论 -
【Spark】join连接测试
1、代码package com.gl.testimport org.apache.spark.sql.{DataFrame, SparkSession}object Test { case class Stu(name: String, sex: String) case class Info(name: String, address: String,phone:String) def main(args: Array[String]): Unit = { val s原创 2021-10-13 14:41:50 · 273 阅读 · 0 评论 -
【Spark GraphX】社交网图分析
目录一、数据1、数据关系图2、数据说明3、顶点表4、边表二、需求三、需求实现1、构造fans网图2、找出年龄大于30岁的顶点3、找出边属性大于5的边4、将每个顶点的年龄+205、将边的属性*36、找出顶点年龄大于30的子图7、创建以User作为顶点的新图8、找出年纪最大的追求者9、计算追求者的平均年纪10、找出顶点5到各顶点的最短距离一、数据1、数据关系图2、数据说明 每个顶点代表一位社交成员,如顶点3...原创 2021-09-10 15:36:59 · 1095 阅读 · 1 评论 -
【Spark GraphX】航班数据网图分析
目录一、数据格式二、需求分析三、代码分析一、数据格式从左到右依次为:日、周、航空公司、飞机注册号、航班号、起飞机场编号、起飞机场、到达机场编号、到达机场、预计起飞时间(时分)、起飞时间、起飞延迟(分钟)、到达预计时间、到达时间、到达延迟(分钟)、预计飞行时间、飞行距离; 数据格式:csv格式、逗号分隔;二、需求分析加载数据及网图构建 统计机场数量 统计航线数 计算最长的飞行航线 找出最繁忙的机场 找出最重要的机场 找出最便宜的飞机航线三、代码分析pack.原创 2021-09-10 09:14:48 · 626 阅读 · 0 评论 -
【Spark GraphX】初始Spark GraphX
目录一、基本概念二、图例说明一、基本概念1、Spark GpaphX:是一个分布式图处理框架,基于spark平台提供对图计算和图挖掘简洁易用而丰富多彩的接口,极大地方便了分布式图处理的需求;2、图:图是由顶点集合(vertex)及顶点间的关系集合(边edge)组成的一种数据结构。3、Spark GraphX中有三个重要的概念:(1)Vertices:对应的RDD名称为VertexRDD,属性包括顶点ID和顶点属性;(2)Edges:对应的RDD名称为EdgeRDD,属性包括源原创 2021-09-08 17:31:14 · 726 阅读 · 0 评论 -
【spark】控制日志输出的方法
【spark】控制日志输出的方法原创 2021-09-07 14:32:31 · 7679 阅读 · 0 评论 -
【Spark+Es】Spark多方案读取Es性能比较
目录一、测试环境二、测试1、代码2、输出3、用时比较一、测试环境环境:spark:2.2.0Elasticsearch:7.14.0主要maven: <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-spark-20_2.11</artifactId原创 2021-09-02 14:44:04 · 4152 阅读 · 0 评论 -
【spark内置函数】lit和typedLit
一、说明typedlit内置函数在spark2.2.0版本开始出现。 org.apache.spark.sql.functions.typedLit,可以添加List,Seq和Map类型的常量列。 org.apache.spark.sql.functions.lit来添加简单类型(string,int,float,long,等)的常量列。二、代码测试package com.dt.spark.Testimport org.apache.spark.sql.expressions.User.原创 2021-08-27 17:46:04 · 4279 阅读 · 0 评论 -
【spark内置函数】current_date、current_timestamp、date_format
一、目的演示sparkSql三种内置函数current_date、current_timestamp、date_format的使用;注意:current_timestamp输出的并不是长整型时间戳,而是2021-08-25 17:35:25.568格式;二、代码package com.gl.testimport org.apache.spark.sql.{DataFrame, SparkSession}object Test { case class DateT(name:S原创 2021-08-25 17:44:53 · 3124 阅读 · 1 评论 -
sparkSql 读写Es
sparkSql 读写Es原创 2021-08-05 10:35:28 · 1802 阅读 · 0 评论 -
【spark内置函数】window
一、说明这里的window函数是属于functions.scala文件中的内置函数。 window函数是在spark2.0.0中新增的API函数。 这里选取股票数据为测试数据:测试数据下载地址。 时间一定要整理成yyyy-MM-dd hh:mm:ss格式,其他格式内置函数不识别。二、数据样式--表头id,date,openPrice,highestPrice,lowestPrice,closePrice,exchangeNum代码,时间,开盘价,最高价,最低价,收盘价,成交量(手)-原创 2021-08-04 14:30:18 · 701 阅读 · 0 评论 -
spark 用户自定义函数UDF
一、说明在Spark中,自定义函数可以分为两种UDF和UDAF(这里只演示UDF)。 UDF(User-Defined-Function),即最基本的自定义函数。类似 lit、sqrt之类的函数,是对每一条数据处理。输入和输出是一对一的关系。 UDAF(User- Defined Aggregation Funcation),用户自定义聚合函数。类似sum、count之类的函数,是对数据按一定规则分组之后的聚合处理。输入和输出是多对一的关系。 自定义函数的写法有两种,一种需要注册,一种不需要注册.原创 2021-08-04 09:50:16 · 2996 阅读 · 0 评论 -
【spark内置函数】常用函数
一、说明spark框架源码functions.scala文件包含了大量的内置函数,尤其在agg函数中会广泛应用。 使用之前要导入import org.apache.spark.sql.functions._ 这里只列举了一些常用的内置函数,其他的要参考官网。二、代码示例package com.dt.spark.Testimport com.dt.spark.Test.AggTest.Studentimport org.apache.spark.sql.{DataFrame, Spar.原创 2021-08-03 15:56:18 · 1193 阅读 · 0 评论 -
spark中agg函数
说明agg函数经常与groupBy函数一起使用,起到分类聚合的作用;如果单独使用则对整体进行聚合;代码示例package com.dt.spark.Testimport org.apache.spark.sql.{DataFrame, SparkSession}object AggTest { case class Student(classId:Int,name:String,gender:String,age:Int) def main(args: Array[Stri原创 2021-07-26 16:54:54 · 5359 阅读 · 0 评论 -
windows下Spark环境搭建
一、环境准备1、Jdk(windows版本)2、scala(windows版本)3、spark安装包4原创 2021-06-17 11:36:38 · 1212 阅读 · 0 评论 -
sparkSql读取数据库并作相应的条件操作
一、数据库数据二、代码package com.cn.dataFramimport com.cn.dataFram.DfSaveToMysql.jdbcConnectInfoimport org.apache.spark.sql.{DataFrame, Dataset, SparkSession}import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.sql.functions._object原创 2020-08-12 14:10:53 · 857 阅读 · 0 评论 -
RDD转换为DF并入库处理
一、说明1、在spark项目中,有时候需要将数据进行入库。可以直接将RDD转化为DataFram并将数据写入关系型数据库;2、这里演示写入Mysql和Oracle数据库;二、代码package com.cn.dataFramimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.sql.{DataFrame, SparkSessio原创 2020-08-11 14:48:20 · 859 阅读 · 0 评论 -
DataFram列操作_withColumn()
一、说明1、常用列对象:' 、$ 、col 、column;2、withColumn的第二个参数要传入已有列的Column对象,否则会报错;3、sql.functions.lit()函数,返回的也是列对象,可以传入任意参数值;二、实例1、testData张三,23李四,24王五,25赵六,262、代码package com.cn.dataFramimport org.apache.spark.sql.{DataFrame, Dataset, SparkSess.原创 2020-08-10 14:40:52 · 12554 阅读 · 0 评论 -
Scala_scopt 解析命令行参数
一、说明1、在做spark项目时,在命令行提交任务时,可以利用 --参数名:参数进行动态传参;2、操作步骤(1)首先写个表示配置的case class类,里面为每一个参数指定默认值;(2)onfig 配置对象作为参数传递给action回调;(3)解析命令行参数;二、操作演示1、代码package com.cnimport org.apache.spark.{SparkConf, SparkContext}import scopt.OptionParserobj..原创 2020-08-09 18:19:28 · 2230 阅读 · 0 评论 -
【RDD Action】foreachPartition、keyBy、keys、values、collectAsMap
一、Rdd行动算子1、【foreachPartition】可以遍历rdd中每一个分区的数据。多用于对数据进行持久化,比如存储到数据库中;2、【keyBy】对传入的参数作为key存在,rdd中的原有元素作为value存在,形成一个新元组。可以遍历rdd中的每一个元素;3、【keys】获取rdd中元组的所有key;4、【values】获取rdd中元组的所有value;5、【collectAsMap】将rdd中存储的元组直接转化为Map,重复key会覆盖;二、实例package co原创 2020-08-09 15:38:33 · 464 阅读 · 0 评论 -
【RDD Action】countByKey、countByValue、filterByRange、flatMapValues
一、Rdd行动算子1、【countByKey】统计存储在rdd中元组的key的个数,key是相同的就会进行计数+1。通过这个key 会生成一个Map Map中的key是原有中的key,value是原有key的个数;2、【countByValue】统计在Rdd中存储元素的个数。会将rdd中每一个元组看作为一个value,若这个元组中元素是相同的,此时就会将生成Map中的value+1;3、【filterByRange】对rdd中的元素过滤,并返回指定内容的数据。该函数作用于键值对RDD,对RDD中原创 2020-08-09 15:31:38 · 508 阅读 · 0 评论 -
【RDD Action】takeOrdered、first、saveAsTestFile、foreach
一、Rdd行动算子1、【takeOrdered】可以将rdd中存储的数据进行升序排序(从小到大),根据参数获取相应的值;2、【first】顺序获取rdd的第一个元素,等价于take(1);3、【saveAsTestFile】将rdd处理的结果存储成文件,参数是一个路径,本地路径或者hdfs系统;4、【foreach】遍历rdd中的数据;二、实例package com.cn.rddOperatorimport org.apache.spark.rdd.RDDimport org原创 2020-08-09 15:25:15 · 343 阅读 · 0 评论 -
【RDD Action】collect、count、top、take
一、Rdd行动算子1、【collect】将rdd转化为数组或集合的形式并展示所有数据;2、【count】返回rdd中存储元素的个数;3、【top】取出存储在rdd中的元素,根据传入的数值,取出对应的个数。自带排序,默认是降序,从大到小;4、【take】取出存储在rdd中对应数量的值,无排序;二、实例package com.cn.rddOperatorimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkCon原创 2020-08-09 15:21:08 · 578 阅读 · 0 评论 -
【RDD Transformation】reduce、reduceByKey、aggregateByKey、combineByKey
一、Rdd转化算子1、【reduce】可以对rdd中的元素进行求和;2、【reduceByKey】是存储着元组类型的rdd,相同key为一组,计算对应的value值;3、【aggregateByKey】参数:初始值,分区元素的计算,全局元素的计算;4、【combineByKey】参数,(1)、遍历当前分区中所有元素,遇到之前累加,没遇到和0累加;(2)、当前分区内运算;(3)、全局分区运算;二、实例package com.cn.rddOperatorimport org.apa原创 2020-08-09 15:11:35 · 257 阅读 · 0 评论 -
【RDD Transformation】mapPartitions、mapPartitionswithIndex、repartition、coalesce、partitionBy
一、Rdd转化算子1、【mapPartitions】遍历出集合(rdd)中的每一个元素,并对元素可以进一步操作;是对每个分区中的数据进行迭代;2、【mapPartitionswithIndex】是对rdd中每个分区的遍历操作;3、【repartition】可以对rdd进行重新分区,可以是超过原有分区个数,也可以小于原有分区个数。 默认会执行shuffle 即对分区中的数据重新计算;4、【coalesce】算子也可以对rdd进行重新分区,这个分区只能是小于原有分区的值。coalesce是不会进原创 2020-08-09 14:43:04 · 304 阅读 · 0 评论 -
【RDD Transformation】leftOuterJoin、rightOuterJoin、cartesian、groupBy
一、Rdd转化算子1、【leftOuterJoin】左连接:以左边rdd为基准,若连接rdd没有左边rdd中的元素,则给null;2、【rightOuterJoin】右连接:以右边rdd为基准,若连接rdd没有右边rdd中的元素,则给null;3、【cartesian】笛卡儿积;4、【groupBy】groupBy分组:根据传入的参数进行分组,相同参数是一组;二、实例package com.cn.rddOperatorimport org.apache.spark.rdd.RD原创 2020-08-09 14:34:22 · 281 阅读 · 0 评论 -
【RDD Transformation】union、intersection、distinct、join
一、Rdd转化算子1、【union】并集;2、【intersection】交集;3、【distinct】去重;4、【join】只对相同的key合并操作;二、实例package com.cn.rddOperatorimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object Transformation02 { def main(args: Array[Str原创 2020-08-09 14:26:51 · 276 阅读 · 0 评论