spark
feiyuciuxun
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
RDD转换算子
value类型1maprdd.map:调用map方法的源码如下:def map[U: ClassTag](f: T => U): RDD[U] = withScope { val cleanF = sc.clean(f) new MapPartitionsRDD[U, T](this, (context, pid, iter) => iter.map(cl...原创 2020-02-03 00:04:02 · 282 阅读 · 0 评论 -
RDD的创建
RDD有三种创建方式1、从内存/集合中创建val conf: SparkConf = new SparkConf().setAppName("test01").setMaster("local[*]")val sc = new SparkContext(conf) val rdd1: RDD[Int] = sc.parallelize(List(1, 2, 3, 4))v...原创 2020-01-21 17:41:56 · 444 阅读 · 0 评论 -
隐式转换之reduceByKey
下面代码中,wordToOne是RDD类型,调用了reduceByKey方法,但是reduceByKey是PairRDD类型的方法,那不属于一个类型,为什么可以调用呢? 或者说RDD类中不存在reduceByKey方法原因是RDD类中有隐式转换,将RDD通过隐式转换是的可以使用PairRDD的方法package com.aiyunxiao.test01import org.apach...原创 2020-01-19 00:07:38 · 240 阅读 · 0 评论 -
idea编写第一个spark代码
idea中编写好代码,称之为源码。经过编译后会产生一个target包,里面有一个classes包,里面是存放的编译后的代码,此路径称之为classpath。并且resource目录底下的文件也会放入classpath中java要想从classpath中查找文件(配置文件,XML文件)一般使用如下方式(是指从resource文件底下读取配置文件):// 当前环境的类加载器中,...原创 2020-01-19 00:07:01 · 224 阅读 · 0 评论 -
spark-shell
进入spark目录,运行 "bin/spark-shell",就进入spark-shell环境Spark context Web UI available at http://192.168.1.102:4040Spark context available as 'sc' (master = local[*], app id = local-1579337250011).Spark s...原创 2020-01-18 21:41:45 · 250 阅读 · 0 评论 -
spark离线数仓优化
select方法:当业务需求只取DataFrame的某几列时可以使用select方法来获取其中几列,DataFrame.select(“字段1”,“字段2”,“字段3”) 方法返回值为DataframeDataFrame join的两种方式DataFrameA.join(DataFrameB,DataFrameA(“字段名”)===DataFrameB(“字段名”)) DataF...原创 2019-12-03 12:44:53 · 1270 阅读 · 0 评论 -
sparksql数仓遇到的问题
toDF().coalesce(1).write.mode(SaveMode.Append).insertInto("dwd.dwd_member_regtype")使用insertInto时,要插入的数据顺序必须和已经简历好的表的字段顺序一样 saveAsTable没有上述要求,但是他不兼容hive,使用时,会删掉重新建sparksql中有 first函数,而hive没有拉链表制作过...原创 2019-12-03 11:10:22 · 590 阅读 · 0 评论 -
sparkStreaming中使用sql和DataFrame
你可以很容易地在流数据上使用 DataFrames 和SQL。你必须使用SparkContext来创建StreamingContext要用的SQLContext。val spark = SparkSession.builder.config(conf).getOrCreate()import spark.implicits._count.foreachRDD(rdd =>{ ...原创 2019-12-01 21:01:55 · 289 阅读 · 0 评论 -
Spark-Streaming简介、有状态算子
简介:Spark Streaming是微批次处理方式,批处理间隔是Spark Streaming是的核心概念和关键参数。 Spark Streaming需要单独一个节点来接收数据,所以Spark有状态算子:window// windowLength : 窗口长度 – 窗口的持久时间(执行一次持续多少个时间单位)// slideInterval :滑动步长 – 窗口操作被执行...原创 2019-12-01 20:57:59 · 658 阅读 · 0 评论 -
sparkStreaming之transform、foreachRDD
transform:每一批次调用一次 如下代码介绍的那样,foreachRDD内部最开始一部分是运行在Driver中,可以做一些连接之类的工作foreachRDD什么时候用foreachRDD,什么时候用transform?需要有返回时,就用transform。不需要返回时就用foreachRDD什么时候用 map,什么时候用 foreach?需要返回时用 map, 不需要返...原创 2019-12-01 20:39:45 · 902 阅读 · 0 评论 -
SparkStreaming数据源之Kafka
导入依赖:<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming-kafka-0-8_2.11</artifactId> <version>2.1.1</version></dep...原创 2019-12-01 18:50:12 · 469 阅读 · 0 评论 -
Spark-Streaming背压机制
Spark Streaming是微批次处理方式,批处理间隔是Spark Streaming是的核心概念和关键参数。 Spark Streaming需要单独一个节点来接收数据,所以Spark Streaming 至少需要两个节点才能运行背压机制Spark1.5版本之前通过设置静态参数来限制接收速率 Spark1.5版本之后可以动态控制数据接收速率来适配集群处理能力。背压机制:JobSch...原创 2019-12-01 16:53:55 · 682 阅读 · 0 评论 -
SparkSQL实现:各区域热门商品 Top3(自定义udaf)
介绍:我们这次 Spark-sql 操作中所有的数据均来自 Hive. 首先在 Hive 中创建表, 并导入数据. 一共有 3 张表: 1 张用户行为表, 1 张城市表, 1 张产品表CREATE TABLE `user_visit_action`( `date` string, `user_id` bigint, `session_id` string, `page_...原创 2019-12-01 15:39:27 · 720 阅读 · 0 评论 -
sparkSql自定义聚合函数
自定义聚合函数分两个类型,一个是强类型的,需要用DSL语句,另一个就是下面这种import java.langimport java.sql.{Connection, DriverManager, PreparedStatement}import java.util.Propertiesimport org.apache.spark.broadcast.Broadcastimpo...原创 2019-11-30 21:12:34 · 379 阅读 · 0 评论 -
Spark Sql之数据源
读数据Spark默认支持夺中数据源文件:parquet、csv、jdbc、orc、text、textFile、format...... spark Sql通用读取数据格式:sparkSession.read.load("path")// 等价于sparkSession.read.parquet("path")注意:上面语句默认是读取的 parquet 格式的文件,如果文件格式...原创 2019-11-30 20:06:57 · 274 阅读 · 0 评论 -
Spark之 RDD、DataSet、DataFrame
前言SparkContext是RDD的环境 SparkSession是DataSet和DataFrame的环境,SparkSession内部封装了SparkContext StreamingContext是Spark streaming得环境,底层封装了SparkContext// 创建RDD 得 SparkContext 环境val sparkConf: SparkConf = ...原创 2019-11-30 19:12:02 · 229 阅读 · 0 评论 -
SparkSql
SparkSql数据源读取Json文件{"name": "lisi", "age" : 20, "friends": ["lisi", "zs"]}{"name": "zs", "age" : 30, "friends": ["lisi", "zs"]}{"name": "wangwu", "age" : 15, "friends": ["lisi", "zs"]}def main...原创 2019-11-30 19:06:34 · 105 阅读 · 0 评论 -
Spark累加器
累加器声明、使用val sparkConf: SparkConf = new SparkConf().setAppName("haha").setMaster("local[*]") val sc = new SparkContext(sparkConf) val rdd: RDD[(Int, Int)] = sc.makeRDD(List((1,1),(1,...原创 2019-11-30 15:09:07 · 142 阅读 · 0 评论 -
Spark文件的读取与保存
Spark读取的文件格式:Text文件,Json文件,Csv文件,Sequence文件,Object文件 Spark读取的文件系统:本地文件系统、HDFS、Hbase、数据库平时用的比较多的是:从HDFS读取,保存Text文件一、读取Text文件val rdd1 = sc.textFile("./words.txt")rdd1.saveAsTextFile("hdfs://had...原创 2019-11-30 13:57:09 · 295 阅读 · 0 评论 -
Spark持久化
为了避免spark重复计算某些RDD,可以使用持久化技术:persist() 可以传递存储级别 cache() 默认使用 memory_only(堆内存)spark的Cache是容错的,RDD的任何一个分区的数据丢失了,Spark会自动的重新计算,分区是相互独立的,因此只需要计算丢失的部分即可一般是不适用checkpoint的,因为容易产生小文件...原创 2019-11-30 12:40:35 · 169 阅读 · 0 评论 -
Spark的Job提交流程以及相关知识
阶段数量 = 1 + shuffle依赖的个数 任务的数量 = 一个阶段中最后一个RDD的分区数 Job的数量 = 一个Spark应用中调用行动算子的次数spark提交作业 调用action算子 --> 调用 RDD类的runJob方法 --> 调用 SparkContext 类的 dagScheduler.runJob方法--> DAGScheduler....原创 2019-11-30 12:00:59 · 275 阅读 · 0 评论 -
spark序列化
spark默认使用java的序列化,但是java序列化太重,且序列化后的对象比较大 kryo序列化比较简洁,值存储数据本身,速度是Serializable的10倍, 弊端:支持的类型比较少 从2.0开始,Spark内部已经在使用kryo序列化,当RDD在Shuffle数据的时候,简单数据类型、简单数据类型的数组和字符串类型已经在使用kryo序列化。 DataSet和Dat...原创 2019-11-30 00:01:35 · 184 阅读 · 0 评论 -
spark分区器
spark的分区器: 只有涉及到 key-value 类型的RDD才会用到分区器,因为分区是以key分区的Spark中分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle过程属于哪个分区和Reduce的个数。a、HashPartitioner(默认分区器): hash分区器,将key的hash值除以分区个数,余数是几就分配到第几个分区 弊端: ...原创 2019-11-29 23:53:44 · 737 阅读 · 0 评论
分享