![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
小财迷,嘻嘻
这个作者很懒,什么都没留下…
展开
-
Spark常用依赖和打包插件
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/mav原创 2021-01-20 11:14:05 · 532 阅读 · 0 评论 -
使用Spark SQL需要导的包
import org.apache.spark.sql._import org.apache.spark.sql.functions._import spark.implicits._import org.apache.spark.sql.types._# 如果使用DataFrame的窗口函数需要导以下的包import org.apache.spark.sql.expressions.Window原创 2021-01-19 21:56:26 · 783 阅读 · 0 评论 -
Spark获取DataFrame中列的方式--col,$,column,apply
使用需要导包: import spark.implicits._ import org.apache.spark.sql.functions._ import org.apache.spark.sql.Column官方说明: df("columnName") // On a specific DataFrame. col("columnName") // A generic column no yet associated with原创 2021-01-17 17:33:54 · 1343 阅读 · 0 评论 -
scala DataFrame实现窗口排序功能,row_number(),rank(),dense_rank()
hive中的窗口函数很好用,那DataFrame如何实现呢?1、数据准备: 现有一张表score,表数据如下,字段名分别是:s_id,c_id,s_score,即学号,课程编号,成绩。hive> select * from score;OK1 1 801 2 901 3 992 1 702 2 602 3 1803 1原创 2021-01-16 21:14:15 · 1025 阅读 · 0 评论 -
Spark Streaming中的Window操作
窗口函数,就是在DStream流上,以一个可配置的长度为窗口,以一个可配置的速率向前移动窗口,根据窗口函数的具体内容,分别对当前窗口中的这一波数据采集某对应的操作算子。需要注意的是窗口长度,和窗口移动速率需要是batch time的整数倍。...原创 2020-12-28 18:45:31 · 300 阅读 · 0 评论 -
Spark Streaming和Spark SQL
Spark Streaming中的逻辑除了可以用RDD写,还可以使用Spark SQL来写。需求:实现wordcountimport org.apache.kafka.clients.consumer.{ConsumerConfig, ConsumerRecord}import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.sql.{DataFrame原创 2020-12-28 17:41:08 · 193 阅读 · 4 评论 -
Spark Streaming更改数据结构
我们在使用Spark Streaming处理流式数据时,业务需求需要更改数据结构,可以使用transform完成转化工作。需求:输入:java scala java java,要求加上指定时间格式,输出:((java,20201224 17:30:10),3)((scala,20201224 17:30:10),1)import java.text.SimpleDateFormatimport org.apache.kafka.clients.consumer.{ConsumerConfig,原创 2020-12-24 17:35:24 · 150 阅读 · 2 评论 -
Spark Streaming简介及运用(含案例)
案例一:采集端口数据实现wordcountimport org.apache.spark.SparkConfimport org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}import org.apache.spark.streaming.{Seconds, StreamingContext}object SparkStreamDemo1 { def main(args: Array[String]): Unit原创 2020-12-24 14:58:56 · 721 阅读 · 1 评论 -
Spark日志文件清洗及分析
1、数据清洗读入日志文件并转化为RDD[Row]类型按照Tab切割数据过滤掉字段数量少于8个的对数据进行清洗按照第一列和第二列对数据进行去重过滤掉状态码非200过滤掉event_time为空的数据将url按照”&”以及”=”切割保存数据将数据写入mysql表中文件目录:D:\test\t\test.log,一条数据的结构如下:2018-09-04T20:27:31+08:00 http://datacenter.bdqn.cn/logs/user?ac原创 2020-11-26 19:13:36 · 529 阅读 · 0 评论 -
Spark常用RDD算子(scala和java版本)
文章目录1、创建RDD1.1 parallelize1.2 makeRDD1.3 textFile2、基本操作2.1 filter2.2 map2.3 flatMap2.4 distinct3、操作集合3.1 union3.2 intersection3.3 subtract3.4 cartesian4、创建键值对4.1 mapToPair4.2 flatMapToPair5、键值对聚合操作5.1 combineByKey5.2 reduceByKey5.3 foldByKey6、排序操作6.1 sortB原创 2020-11-26 16:30:45 · 843 阅读 · 0 评论 -
RDD简介和创建RDD
目录1、简介1.1 概念1.2 特性1.3 RDD编程流程2、创建RDD2.1 使用内存集合创建RDD(测试环境)2.2 使用本地文件创建RDD(测试环境)2.3 使用HDFS文件创建RDD(生产环境)1、简介1.1 概念RDD是将数据拆分为多个分区的集合,存储在集群的工作节点上的内存中。RDD是弹性分布式数据集(Resilient Distributed Datasets)1、分布式(Distributed)数据的计算并非只局限于单个节点,而是多个节点之间协同计算得到的。2、数据集(Da原创 2020-11-26 16:22:37 · 323 阅读 · 0 评论 -
基于Spark GraphX的图形数据分析
1、为什么需要图计算许多大数据以大规模图或网络的形式呈现许多非图结构的大数据,常会被转换为图模型进行分析图数据结构很好地表达了数据之间的关联性2、图的概念2.1 图的基本概念及应用场景图是由顶点集合(vertex)及顶点间的关系集合(边edge)组成的一种网状数据结构通常表示为二元组:Gragh=(V,E)可以对事物之间的关系建模应用场景在地图应用中寻找最短路径社交网络关系网页间超链接关系2.2 图的术语2.2.1 顶点(Vertex)和边(Edge)一般关系图中,原创 2020-11-26 15:13:47 · 228 阅读 · 0 评论 -
Spark之json嵌套数据结构的操作(json日志文件处理)
目录1、数据准备2、get_json_object3、from_json4、explode在工作中可能会需要处理复杂的json文件,甚至是类json文件(与json格式很像,需要我们调整为json格式再进行处理),我们可以使用Spark SQL的一些实用函数帮助解决复杂嵌套的json数据格式。本文主要讲解以下三种方法:1)get_json_object2)from_json3)explode需求:将复杂嵌套的json数据格式转化为DataFrame。1、数据准备在HDFS的/wctest/目原创 2020-11-23 20:03:45 · 556 阅读 · 0 评论 -
IDEA中创建SparkContext和SparkSession
val conf:SparkConf=new SparkConf().setMaster("local[2]").setAppName("wordcount")val sc:SparkContext=SparkContext.getOrCreate(conf)val spark:SparkSession = SparkSession.builder().config(conf).getOrCreate()val spark:SparkSession = SparkSession.builder()原创 2020-11-18 10:14:54 · 1172 阅读 · 0 评论 -
Spark自定义函数(UDF、UDAF、UDTF)
目录1、自定义标准函数(UDF)2、自定义聚合函数(UDAF)3、自定义表生成函数(UDTF)Spark提供大量内置函数供开发者使用,也可以自定义函数使用。Spark自定义函数步骤:1、定义函数2、注册函数SparkSession.udf.register():只在sql()中有效functions.udf():对DataFrame API均有效3、函数调用1、自定义标准函数(UDF)在D:\test\t\目录下有文件hobbies.txt,文件内容:alice jogging,Codi原创 2020-11-18 10:06:36 · 977 阅读 · 0 评论 -
创建Dataset和DataFrame
目录1、创建DataFrame1.1 读文件创建1.2 由RDD创建DataFrame1.2.1 使用反射推断1.2.2 以编程方式指定Schema2、创建Dataset2.1 使用createDataset创建2.2 使用Case Class创建3、DataFrames与Datasets互相转换1、创建DataFrameSpark 中所有功能的入口点是 SparkSession,可以使用 SparkSession.builder() 创建。创建后应用程序就可以从现有 RDD,Hive 表或 Spark原创 2020-11-17 12:04:18 · 820 阅读 · 0 评论 -
Structured API基本使用
文章目录一、创建DataFrame和Dataset1.1 创建DataFrame1.2 创建Dataset1. 由外部数据集创建2. 由内部数据集创建1.3 由RDD创建DataFrame1. 使用反射推断2. 以编程方式指定Schema1.4 DataFrames与Datasets互相转换二、Columns列操作2.1 引用列2.2 新增列2.3 删除列2.4 重命名列三、使用Structured API进行基本查询四、使用Spark SQL进行基本查询4.1 Spark SQL基本使用4.2 全局临时视原创 2020-11-16 23:45:22 · 134 阅读 · 0 评论 -
DataFrame和Dataset简介
目录一、Spark SQL简介二、DataFrame & DataSet2.1 DataFrame2.2 DataFrame 对比 RDDs2.3 DataSet2.4 静态类型与运行时类型安全2.5 Untyped & Typed三、DataFrame & DataSet & RDDs 总结四、Spark SQL的运行原理4.1 逻辑计划(Logical Plan)4.2 物理计划(Physical Plan)4.3 执行一、Spark SQL简介Spark SQL 是原创 2020-11-16 22:16:06 · 366 阅读 · 0 评论 -
Spark内置函数和自定义标准函数
目录1、内置函数2、自定义函数1、内置函数需要导包:import org.apache.spark.sql.funtions._例题一:import org.apache.spark.sql.{Row, SparkSession}import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}object InnerFunctionDemo { def main(args: Array原创 2020-11-16 20:00:28 · 201 阅读 · 0 评论 -
Spark SQL操作外部数据源(含Spark和Hive集成)
目录1、简介1.1 多数据源支持1.2 读数据格式1.3 写数据格式2、CSV2.1 读取CSV文件2.2 写入CSV文件3、JSON3.1 读取JSON文件3.2 写入JSON文件4、Parquet4.1 读取Parquet4.2 写入Parquet文件5、hive表5.1 spark-shell5.2 IDEA6、mysql6.1 spark-shell6.2 IDEA1、简介1.1 多数据源支持1.2 读数据格式所有读取 API 遵循以下调用格式:// 格式DataFrameReader原创 2020-11-16 19:46:17 · 301 阅读 · 0 评论 -
基于RDD的Spark应用程序开发(实现词频统计)
1、开发环境IDEA+MAVEN+Scalapom.xml2、实现原创 2020-11-15 22:49:12 · 1768 阅读 · 0 评论 -
Spark加载CSV文件并移除首行,加载JSON并简单使用DataFrame
目录1、加载CSV数据源并移除首行1.1 使用SparkContext1.2 使用SparkSession2、加载JSON数据源并操作列2.1 使用SparkContext2.2 使用SparkSession2.3 DataFrame操作列1、加载CSV数据源并移除首行D盘的test/t目录下有文件users.csv,文件预览如下,加载数据到spark并移除首行。1.1 使用SparkContextimport org.apache.spark.{SparkConf, SparkContext}原创 2020-11-12 20:00:24 · 867 阅读 · 0 评论 -
RDD优化--RDD共享变量(广播变量与累加器)
文章目录1、简介2、广播变量3、累加器1、简介在Spark中,提供了两种类型的共享变量:广播变量 (broadcast variable)与累加器 (accumulator) :广播变量:主要用于在节点间高效分发大对象。累加器:用来对信息进行聚合,主要用于累计计数等场景;2、广播变量广播变量:允许开发者将一个只读变量(Driver端)缓存到每个节点(Executor)上,而不是每个任务传递一个副本。每个 Task 任务的闭包都会持有自由变量的副本,如果变量很大且 Task 任务很多的情况下原创 2020-11-11 14:13:59 · 173 阅读 · 0 评论 -
RDD优化--RDD持久化(cache,persist,checkpoint)
目录1、为什么要使用RDD持久化2、RDD持久化原理3、RDD持久化使用场景4、怎么使用RDD持久化4.1 cache()4.2 persist()5、RDD持久化策略选择6、checkpoint机制6.1 checkpoint应用6.2 checkpoint使用1、为什么要使用RDD持久化Spark主要是基于内存进行计算的,那么为什么我们对大量数据进行了很多的算子操作而内存不会爆掉?Spark中有tranformation和action两类算子,tranformation算子具有lazy特性,只有a原创 2020-11-11 12:17:13 · 445 阅读 · 0 评论 -
Spark分布式计算原理(宽窄依赖,DAG,stage划分,shuffle过程,Spark计算引擎原理)
文章目录1、RDD依赖1.1 依赖关系1.2 窄依赖1.3 宽依赖1.4 宽依赖对比窄依赖2、DAG3、stage划分3.1 为什么要写在本地3.2 移动算子而不是移动数据4、Spark Shuffle过程5、Spark计算引擎原理1、RDD依赖Spark中RDD的高效与DAG图有着莫大的关系,在DAG调度中需要对计算过程划分stage,而划分依据就是RDD之间的依赖关系。Lineage:血统、遗传。RDD最重要的特性之一,保存了RDD的依赖关系;RDD实现了基于Lineage的容错机制。1.1 依原创 2020-11-11 09:59:19 · 589 阅读 · 0 评论 -
Transformation和Action常用算子
文章目录1、Transformation1.1 map1.2 filter1.3 mapValues1.4 distinct1.5 reduceByKey1.6 groupByKey1.7 sortByKey1.8 union1.9 join2、Action2.1 count2.2 collect2.3 take2.4 First2.5 reduce2.6 foreach2.7 lookup2.8 max2.9 min2.10 saveAsTextFileRDD操作分为lazy和non-lazy两种Tr原创 2020-11-06 17:16:38 · 664 阅读 · 0 评论 -
Spark简介
文章目录1、Spark简介2、Spark特点2.1 为什么使用spark2.2 Spark优势3、Spark技术栈3.1 Spark SQL3.2 Spark Steaming3.3 Spark GraphX3.4 Spark MLlib4、Spark框架设计5、Spark架构核心组件1、Spark简介诞生于加州大学伯克利分校AMP实验室,是一个基于内存的分布式计算框架。发展历程2009年诞生于加州大学伯克利分校AMP实验室2010年正式开源2013年6月正式成为Apache孵化项目2原创 2020-11-06 17:14:38 · 675 阅读 · 0 评论 -
Spark有几种部署模式,每种模式特点
目录1、本地模式2、standalone模式3、Spark on yarn模式1、本地模式Spark不一定要跑在Hadoop集群,可以在本地,起多个线程的方式来指定。将Spark应用以多线程的方式直接运行在本地,一般都是为了方便调试,本地模式分三类:local:只启动一个executorlocal[k]:启动k个executorlocal[*]:启动和cpu数目相同的executer2、standalone模式分布式部署集群,自带完整的服务,资源管理和任务监控是Spark自己监控,这个模式原创 2020-11-04 18:55:15 · 4189 阅读 · 0 评论 -
IDEA中实现 Spark WordCount(包含Maven中增加scala)
1、新建maven工程步骤:File–>New–>Project–>Maven2、Spark与java交互2.1 下载jdk,junit,Spark相关的jar包jdk,junit修改版本号jdk,junit的相关信息原本就有,根据实际修改版本号即可,我用的是jdk1.8和junit4.12在此提供jdk,junit的相关信息,方便复制<properties> <project.build.sourceEncoding>UTF-8<原创 2020-11-03 16:06:49 · 548 阅读 · 0 评论 -
Scala和Spark安装及配置(Linux)
这里写目录标题1、下载网址2、Scala安装2.1 解压及安装2.2 配置环境变量3、Spark安装3.1 解压及安装3.2 配置环境变量3.3 配置env文件3.4 配置slaves文件4、spark-shell前言:安装spark需要jdk环境,hadoop环境。1、下载网址Scala下载网址:https://www.scala-lang.org/download我选择了scala-2.11.12版本,下载虚拟机版本,Scala的windows安装详见我的另一篇博客:搭建Scala开发环境S原创 2020-10-30 16:03:38 · 690 阅读 · 0 评论