
Spark
冬瓜螺旋雪碧
时间的加速度
展开
-
Spark 使用自带的Jackson解析Json字符串为Scala对象
因为Spark自带有Jacksonjar包,所以不需要额外的引入FastJson包即可完成json的解析工作。json 字符串样例:{ "TaskId": 5, "output": "s3://a/b/c/file.csv", "input": "s3://a/b/c/file.csv", "seg": { "type":"haap", "requestId": "dsafdsaf", "requestDate": "2021-01-15" }, "fie原创 2021-01-20 14:58:44 · 969 阅读 · 0 评论 -
SparkSQL DataFrame Select时传入可变参数
最近有个新需求用到spark动态读取数据源,因数据源列名通过json传入,而且业务场景是只用DataFrame做不好用SQL处理。一开始错误代码示例: val ds: Dataset[String] = sparkSession.read.textFile("input/user.txt","input/traffics.txt") ds.show(20) val result = ds.map(x=>{ val str = x.split(" ") (原创 2021-01-18 13:19:12 · 2065 阅读 · 0 评论 -
Spark 通过submit作业启动流程源码分析
Spark作业通过submit操作提交作业一开始脚本通过执行// 很明显这个类中绝对有Main方法, 脚本中 @$ 意思是启动时传递的一堆参数org.apache.spark.deploy.SparkSubmit 类来启动程序 // 很明显 main方法中就调用了一个doSubmit方法而已,并将参数传进去 def main(args: Array[String]): Unit = ...原创 2020-03-31 11:44:43 · 339 阅读 · 0 评论 -
SparkSQL自定义外部数据源源码分析及案例实现
通过查看JDBC方式源代码入口分析:源码分析//继承BaseRelation的类必须能够以`StructType`的形式产生其数据模式。具体的实现应继承自后代Scan类之一abstract class BaseRelation { def sqlContext: SQLContext def schema: StructTypedef sizeInBytes: Long = sq...原创 2019-12-05 21:05:57 · 523 阅读 · 0 评论 -
SparkStreaming Kafka 维护offset
SparkStreaming Kafka 维护offset 官网有三种实现方式CheckpointsKafka itselfYour own data store这里第一种方式不推荐使用,这里只介绍后面两种方式Kafka itself代码分析object MyKafkaConsumer { def main(args: Array[String]): Unit = { ...原创 2019-11-11 16:03:28 · 1127 阅读 · 0 评论 -
SparkStreaming 状态计算 (updateStateByKey mapWithState)区别
SparkStreaming 状态计算updateStateByKey 算子:返回的是带有状态的DStream,在这个DStream里面,每一个key的状态是可以被更新的,通过一个给定的函数,把之前的key的状态和当前key新的状态联合起来计算,用于维持每个key的任意状态。说白了也就是说每一次的老的计算状态都给记录下来,新的计算状态用于去更新老的状态。两步骤:Define the st...原创 2019-11-07 16:58:19 · 539 阅读 · 0 评论 -
Spark 闭包 之 Exception:Task not serializable
错误信息:org.apache.spark.SparkException: Task not serializable at org.apache.spark.util.ClosureCleaner$.ensureSerializable(ClosureCleaner.scala:403) at org.apache.spark.util.ClosureCleaner$.clean(Clos...原创 2019-10-29 16:17:05 · 636 阅读 · 0 评论 -
SparkSQL ETL
记一次SparkSql ETL 过程需求:1)input:json日志2)ETL:根据IP解析出 省份,城市3)stat: 地区分布指标计算,满足条件的才算,满足条件的赋值为1,不满足的赋值为0 (如下图)将统计结果写入MySQL中。(就比如说这个广告请求要满足 requestmode=1 和 processnode =3 这两个条件)val spark = SparkSessi...原创 2019-10-14 16:15:44 · 1777 阅读 · 0 评论 -
SparkSQL DataFrame Datasets
文章目录概述:准备工作:案例及源码分析:1 读取 txt 文件数据2 读取json3 读取CSV 文件4 jdbc 方式读取概述:1)Spark SQL可以加载任何地方的数据,例如mysql,hive,hdfs,hbase等,而且支持很多种格式如json, parquet, avro, csv格式。我们可以开发出任意的外部数据源来连接到Spark SQL,然后我们就可以通过外部数据源API来...原创 2019-10-12 17:43:21 · 580 阅读 · 0 评论 -
SparkCore 运行架构
从经典的WordCount来看SparkCore运行架构术语:相关术语含义Application基于Spark进行构建的用户程序 。由集群中的一个driver program以及多个executors组成Application jar包含用户的Spark应用程序的Jar包。在某些场景下,用户可能想创建“Uber jar”,它包含用户的应用程序和它的依赖。用户的Ja...原创 2019-10-10 11:52:53 · 389 阅读 · 0 评论 -
SparkCore 排序的五种实现方式
假设某个物品属性有(商品名 库存 价格)val sc = new SparkContext(new SparkConf().setMaster("local[2]").setAppName(this.getClass.getName)) // 商品名 库存 价格val rdd = sc.parallelize(List("扑克牌 20 5","iphone11 999 6000","可...原创 2019-09-26 16:38:29 · 541 阅读 · 0 评论 -
SparkCore RDD(二)
文章目录1 map 与 mapPartitions2 mapPartitionsWithIndex 与 mapValues3 map 与 flatmap4 sample 源码分析5 filter6 distinct源码分析7 groupByKey 与 reduceByKey8 groupBy 与 sortBy9 join 与 cogroup结合Spark Core源码浅析RDD (此示例均在sp...原创 2019-09-26 23:59:26 · 205 阅读 · 0 评论 -
SparkCore RDD
学习Spark,多用源码和官网说话。RDD(弹性的分布式数据集):1.the basic abstraction in Spark:RDD是一个抽象类,不能new,必须new其子类2.Represents an immutable :a==>b==>c RDD本身不可变化,只能由一个转变为另外一个3.partitioned collection of elements that...原创 2019-09-24 16:26:41 · 228 阅读 · 0 评论