![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
文章平均质量分 55
普罗米修斯之火
这个作者很懒,什么都没留下…
展开
-
spark 读 http 的 API 接口,将读出的JSON字符串,直接转成 DataFrame
【代码】spark 读 http 的 API 接口,将读出的JSON字符串,直接转成 DataFrame。原创 2023-08-11 10:04:24 · 445 阅读 · 0 评论 -
配置文件获取方法
private val config = ConfigFactory.load() lazy val cassConfig = config.getConfig("mysql") lazy val mysqlUrl = cassConfig.getString("mysql.url") lazy val username = cassConfig.getString("mysql.username") lazy val password = cassConfig.getString("m.原创 2020-11-30 14:05:51 · 7867 阅读 · 0 评论 -
统一列的字段类型为:StringType
bigDF.select(bigDF.columns.map(column => { bigDF.col(column).cast(StringType) }): _*).na.fill("")原创 2020-11-30 13:53:33 · 359 阅读 · 0 评论 -
Spark on Yarn详解
Spark on Yarn详解Spark 可以跑在很多集群上,比如跑在local上,跑在Standalone上,跑在Apache Mesos上,跑在Hadoop YARN上等等。不管你Spark跑在什么上面,它的代码都是一样的,区别只是–master的时候不一样。其中Spark on YARN是工作中或生产上用的非常多的一种运行模式。今天主要对Spark on Yarn 这种方式做讲解。yarn模式两种提交任务方式Spark可以和Yarn整合,将Application提交到Yarn上运行,Yarn有两原创 2020-11-03 21:18:01 · 5094 阅读 · 0 评论 -
大数据之spark_spark整合hive
spark整合hive1.安装MySQL并创建一个普通用户,并且授权set global validate_password_policy=0;set global validate_password_length=1; -- 这个两个设置以后 密码很简单不会报错CREATE USER 'hive'@'%' IDENTIFIED BY '123456'; GRANT ALL PRIVILEGES ON hivedb.* TO 'hive'@'%' IDENTIFIED BY '123456' W原创 2020-10-05 11:59:38 · 239 阅读 · 0 评论 -
大数据之spark_spark sql的自定义函数
用户自定义函数UDF:输入一行返回一行UDTF:输入一行返回多行,类似于flatmapUDAF:输入多行返回一行,类似于聚合函数用户自定义UDF函数UDF案例11.在sql语句中根据ip查询省市地址package com.doit.spark.day11import com.doit.spark.day11.Utils.ip2Longimport org.apache.spark.broadcast.Broadcastimport org.apache.spark.rdd.RDDim原创 2020-10-04 23:56:32 · 667 阅读 · 0 评论 -
大数据之spark_spark SQL案例
连续登录三天的用户案例:数据uid,dtguid01,2018-02-28guid01,2018-03-01guid01,2018-03-01guid01,2018-03-05guid01,2018-03-02guid01,2018-03-04guid01,2018-03-06guid01,2018-03-07guid02,2018-03-01guid02,2018-03-03guid02,2018-03-02guid02,2018-03-06SQL代码实现package c原创 2020-10-04 00:12:31 · 289 阅读 · 0 评论 -
大数据之spark_spark SQL的建表语句
1.通过RDD+case class创建DataFramepackage com.doit.spark.day10import org.apache.spark.rdd.RDDimport org.apache.spark.sql.{DataFrame, SparkSession}object CaseClassCreateDataFrame { def main(args: Array[String]): Unit = { //构建SparkSession val spar原创 2020-10-03 22:56:53 · 3292 阅读 · 0 评论 -
大数据之spark_spark SQL的简介
Spark SQL概述Spark SQL定义Spark SQL是Spark用来处理结构化数据的一个模块什么是DataFrames与RDD类似,DataFrame也是一个分布式数据容器[抽象的]。然而DataFrame更像传统数据库的二维表格,除了数据以外,还记录数据的结构信息,即schema。同时,与Hive类似,DataFrame也支持嵌套数据类型(struct、array和map)。从API易用性的角度上 看,DataFrame API提供的是一套高层的关系操作,比函数式的RDD API要更加原创 2020-09-29 00:03:12 · 288 阅读 · 0 评论 -
大数据之spark_spark的深入理解
Spark执行流程提交任务spark-submit --master spark://node-1.51doit.cn:7070 --executor-memory 1g --total-executor-cores 4 --class cn.51doit.spark.WordCount /root/wc.jar hdfs://node-1.51doit.cn:9000/wc hdfs://node-1.51doit.cn:9000/out0spark任务执行模式Client模式(默认)Dirv原创 2020-09-28 22:55:45 · 470 阅读 · 0 评论 -
大数据之spark_累加器
累加器用来统计数据条数,可以统计总条数,也可以统计指定条件筛选后的数据条数,例如:处理日志数据时,出现的脏数据条数,如果我们想返回所有的脏数据并返回有用的数据,那么我们需要触发两次Job才能做到,如果用了累加器则不用触发两次Job累加器它是先在每个Task中进行累加,返回Driver端时再整体累加所有Task中的累加器,累加器在每个Task上是独立的(class 修饰的),这样可以避免线程安全问题运用累加器时,实际上就是一个闭包,它定义在Driver端,通过Task发送到Executor端,运用在每个原创 2020-09-28 22:27:07 · 383 阅读 · 0 评论 -
大数据之spark_spark中的线程安全问题
Task多线程问题问题原因一个Executor是一个进程,一个进程中可以同时运行多个线程Task,如果多个Task使用了共享的成员变量,就会出现线程不安全的问题案例需求使用spark将日期字符串转换成long类型时间戳样例数据2019-11-06 15:59:502019-11-06 15:59:512019-11-06 15:59:522019-11-06 15:59:532019-11-06 15:59:542019-11-06 15:59:552019-11-06 15:59原创 2020-09-27 23:53:31 · 907 阅读 · 0 评论 -
大数据之spark_spark中的序列化问题详解
Task序列化问题问题现象本质原因1.封装数据的bean没有实现序列化(报错图1)封装数据的bean需要写入本地磁盘和在网络中传输,没有实现序列化出出错2.rdd的算子中传入的函数用到了外部引用类型(闭包),且没有实现序列化(报错图2)本质原因的Task是在Driver端生成的,函数也是在Driver端定义的,但是真正执行是需要将Task和Task中引用都序列化,如果有没法序列化的,就会出现Task没有序列化异常Task在底层有实现序列化接口的,所以Task可以被传输到Executor端,原创 2020-09-27 21:59:42 · 881 阅读 · 2 评论 -
大数据之spark_自定义排序
自定义排序使用rdd的sortBy或sortByKey方法进行排序,实现根据需求实现灵活的排序规则,在给定的数据中,有三个字段,分别是:姓名,年龄,颜值。先按照颜值的从高到低进行排序,如果颜值相等,再安装年龄的升序排序,如果不指定排序规则,直接对Bean排序:sortBy(x => x)会报错数据name,age,fvtaoge,30,99.99xingge,18,9999.99hangge,29,99.99错误示范class BoyBean (val name :String,var原创 2020-09-27 21:12:57 · 498 阅读 · 0 评论 -
大数据之spark_spark的广播变量及ip地址案例分析
广播变量广播变量通常是为了实现mapside join,可以将Driver端的数据广播到属于该application的Executor,然后通过Driver广播变量返回的引用,获取事先广播到Executor的数据广播变量是通过BT的方式广播的(TorrentBroadcast),多个Executor可以相互传递数据,可以提高效率在Driver端使用sc.broadcast这个方法进行广播,并且该方法是阻塞的(同步的)广播变量一但广播出去就不能改变,为了以后可以定期的改变要关联的数据,可以定义一个o原创 2020-09-25 21:50:09 · 2309 阅读 · 0 评论 -
大数据之spark_spark中的特殊算子cache、persist、checkpoint
cache、persist将数据缓存到内存,第一次触发Action,才会将数据放入内存,以后在触发Action,可以复用前面内存中缓存的数据,可以提升技术效率cache和persist的使用场景:一个application多次触发Action,为了复用前面RDD的数据,避免反复读取HDFS(数据源)中的数据和重复计算,persist可以将数据缓存到内存或磁盘【executor所在的内存或磁盘】,第一次触发action才放入到内存或磁盘,以后会缓存的RDD进行操作可以复用缓存的数据。一个RDD多次触发A原创 2020-09-25 20:53:42 · 506 阅读 · 0 评论 -
大数据之spark_spark运行结构剖析
基本概念RDD 概念:分布式、弹性、可容错的抽象数据集 特点 1.有多个分区,分区数量决定任务并行数 从HDFS中读取 如果是从HDFS中读取数据,分区的数量由hdfs中数据的输入切片数量决定 sc.textFile可以指定rdd的分区数量(textFile会生成两个RDD,一个是HadoopRDD负责读取数据,读取到 的数据是k,v类型的,然后内部又调用了一个MapPartitionsRDD,将k的偏移量去掉,只保留v数据, saveAsTextFile中也原创 2020-09-24 23:14:32 · 284 阅读 · 0 评论 -
大数据之spark_流量统计案例
数据用户id,开始时间,结束时间,所用流量1,2020-02-18 14:20:30,2020-02-18 14:46:30,201,2020-02-18 14:47:20,2020-02-18 15:20:30,301,2020-02-18 15:37:23,2020-02-18 16:05:26,401,2020-02-18 16:06:27,2020-02-18 17:20:49,501,2020-02-18 17:21:50,2020-02-18 18:03:27,602,2020-0原创 2020-09-24 22:42:15 · 498 阅读 · 0 评论 -
大数据之spark_连续三天用户登录案例
数据guid01,2018-02-28guid01,2018-03-01guid01,2018-03-05guid01,2018-03-02guid01,2018-03-04guid01,2018-03-06guid01,2018-03-07guid02,2018-03-01guid02,2018-03-03guid02,2018-03-02guid02,2018-03-06要求求每个用户登录记录中连续三天以上有登录记录的用户,并显示出他每个阶段的开始登录时间和结束登录时间实现方原创 2020-09-24 22:08:12 · 281 阅读 · 0 评论 -
大数据之spark_每个学科最受欢迎的老师案例
数据http://bigdata.51doit.cn/laozhanghttp://bigdata.51doit.cn/laozhanghttp://bigdata.51doit.cn/laozhaohttp://bigdata.51doit.cn/laozhaohttp://bigdata.51doit.cn/laozhaohttp://bigdata.51doit.cn/laozhaohttp://bigdata.51doit.cn/laozhaohttp://bigdata.51doi原创 2020-09-23 00:07:31 · 383 阅读 · 0 评论 -
大数据之spark_spark的Action算子解析
所有的Action算子底层都是直接或间接调用了runJob方法触发Action的collect将数据收集到Driver端,并且收集的时候,是按分区编号的顺序进行收集的,所以sort排序后的数据展示出来才能看出是排好序的,collect有一个问题,就是当需要收集的数据太多时,超过内存空间就不会再收集了,因为collect收集过来的数据是存在内存当中的,不会溢写到磁盘,所以用这种方法展示数据,可能会导致数据丢失val rdd1 = sc.parallelize(List(1,2,3,4,5), 2)rd原创 2020-09-23 00:07:17 · 351 阅读 · 0 评论 -
大数据之spark_spark的案例分析
计算订单分类成交金额需求在给定的订单数据,根据订单的分类ID进行聚合,然后按照订单分类名称,统计出某一天商品各个分类的成交金额数据样例{“cid”: 1, “money”: 600.0, “longitude”:116.397128,“latitude”:39.916527,“oid”:“o123”, }“oid”:“o112”, “cid”: 3, “money”: 200.0, “longitude”:118.396128,“latitude”:35.916527}{“oid”:“o124”原创 2020-09-18 21:50:47 · 4753 阅读 · 0 评论 -
大数据之spark_spark的Transformation算子解析
map算子功能所做映射val rdd1: RDD[Int] = sc.parallelize(List(5,6,4,7,3,8,2,9,1,10)).map(_*2)flatMap算子先map在压平,spark中没有flatten方法val rdd2 = sc.parallelize(Array("a b c", "d e f", "h i j"))rdd2.flatMap(_.split(' ')).collectval rdd3 = sc.parallelize(List(List("原创 2020-09-17 22:57:12 · 383 阅读 · 0 评论 -
大数据之spark_spark的执行流程简介及初始Task数量的生成规则
spark的执行流程简介1.类加载,通过反射调用指定类的main方法2.创建SparkContext,跟Master通信,申请资源3.Master跟Worker进行通信启动Executor4.启动Eexcutor,并创建线程池5.Executor向Driver反向注册(前5步完成准备工作)6.创建原始的RDD.例如textFile()7.调用RDD中的Transformations算子8.调用RDD中的Action算子,Action中会调用sc.runJob方法9.构建DAG,根据shu原创 2020-09-17 21:38:24 · 343 阅读 · 0 评论 -
大数据之spark_spark之RDD的使用
什么是RDDRDD的全称为Resilient Distributed Dataset,是一个弹性、可复原的分布式数据集,是Spark中最基本的抽象,是一个不可变的、有多个分区的、可以并行计算的集合。RDD中并不装真正要计算的数据,而装的是描述信息,描述以后从哪里读取数据,调用了用什么方法,传入了什么函数,以及依赖关系等。RDD的特点有一些列连续的分区:分区编号从0开始,分区的数量决定了对应阶段Task的并行度有一个函数作用在每个输入切片上: 每一个分区都会生成一个Task,对该分区的数据进行计算原创 2020-09-17 21:38:14 · 240 阅读 · 0 评论 -
大数据之spark_spark的入门程序编写
Scala编写Spark的WorkCount创建一个Maven项目在pom.xml中添加依赖和插件<?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.原创 2020-09-16 21:58:15 · 457 阅读 · 0 评论 -
大数据之spark_spark简介
什么是SparkSpark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache的顶级项目,2014年5月发布spark1.0,2016年7月发布spark2.0,2020年6月18日发布spark3.0.0Spark的特点Speed:快速高效Hadoop的MapReduce作为第一代分布式大数据计算引擎,在设计之初,受当时计算机硬件条件所限(内存、磁盘、cpu等),为了能原创 2020-09-16 21:03:11 · 4466 阅读 · 0 评论