- 博客(104)
- 收藏
- 关注
原创 Redis:Nosql数据库
RedisNosql技术redis介绍 什么是NoSql NoSql是为了解决高并发、高可扩展、高可用以及高写入而产生的数据库解决方案。NoSql就是Not Only sql。Nosql是非关系型数据库,它是关系型数据库的良好补充,而不能替代关系型数据库。 Nosql数据库分类(了解) 键值(Key-Value)存储数据库相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB典型应用: 内容缓存,主...
2020-08-22 21:38:22 372
原创 SQL:上行流量和下行流量
| id| start_time| end_time|flow|+---+-------------------+-------------------+----+| 1|2020-02-18 14:20:30|2020-02-18 14:46:30| 20|| 1|2020-02-18 14:47:20|2020-02-18 15:20:30| 30|| 1|2020-02-18 15:37:23|2020-02-18 16:05:26| 40|.
2020-08-22 13:52:21 424
原创 Sprak3.0 指定udf查找所属地,传入ip查找归属地的UDF
package com._51doit.spark.SQLUDFimport com._51doit.spark.utils.IpUtilsimport org.apache.spark.broadcast.Broadcastimport org.apache.spark.rdd.RDDimport org.apache.spark.sql.{DataFrame, Dataset, SparkSession}object UDFPlaceOfOwnership { /** * Au.
2020-08-21 21:42:41 177
原创 Spark.3.0最新版UDF实现几何平均数
package com._51doit.spark.SQLUDFimport java.langimport org.apache.log4j.{Level, Logger}import org.apache.spark.sql.expressions.Aggregatorimport org.apache.spark.sql.{Dataset, Encoder, Encoders, SparkSession}object UDAFGeo_Mean { /** * Author:.
2020-08-21 21:41:05 322
原创 Spark:3.0:使用最新版UDAF实现AVG
package cn._51doit.spark.day12import org.apache.spark.sql.catalyst.expressions.Encodeimport org.apache.spark.sql.{Encoder, Encoders, SparkSession}import org.apache.spark.sql.expressions.Aggregatorobject UDFDemo5 { def main(args: Array[String]): U.
2020-08-21 21:39:59 559
原创 spark:使用UDAF实现AVG
package com._51doit.spark.SQLUDFimport org.apache.spark.sql.SparkSessionobject UDAFMyAvg { /** * Author: 实现avg * Date: 2020/8/21 * Description: */ def main(args: Array[String]): Unit = { val spark = SparkSession.builder()..
2020-08-21 21:38:16 264
原创 Spark :使用UDF实现ConCat_ws
import org.apache.log4j.{Level, Logger}import org.apache.spark.sql.{DataFrame, Dataset, SparkSession}object ConCat_WS { /** * Author: 指定UDF concat_ws,行转列 * Date: 2020/8/21 * Description: 指定UDF concat_ws,行转列 */ def main(args: Arr..
2020-08-21 21:35:59 399
原创 spark:不是我的shuffle
huffle过程:由ShuffleManager负责,计算引擎HashShuffleManager(Spark 1.2)—>SortShuffleManagerspark根据shuffle类算子进行stage的划分,当执行某个shuffle类算子(reduceByKey、join)时,算子之前的代码被划分为一个stage,之后的代码被划分为下一个stage。当前stage开始执行时,它的每个task会从上一个stage的task坐在的节点通过网络拉取所需的数据HashShuffleMan.
2020-08-20 20:03:23 69
原创 行转列,列转行 炸裂 lateral view explode(category)
行转列 CONCAT concat(name,":",age)拼接符返回输入字符串连接后的结果 concat_ws(",")给个参数,后面每个都有,collect_list不去重collect_set 去重列转行 selectconcat(name,":"blood_type)fromv_hangzhuanlie+------+-------------+----------+| name|constellation|blood_type|+------...
2020-08-20 15:45:17 336
原创 sql:case when的案例
case when else end+----+---+------+| id|num|gender|+----+---+------+|悟空| A| 男||娜娜| A| 男||宋宋| B| 男||凤姐| A| 女||热巴| B| 女||慧慧| B| 女|+----+---+------+//求出不同部门男女各多少人。结果如下://A 2 1//B 1 2 selectnum,sum(.
2020-08-20 15:41:34 129
原创 SQL函数查询2020年购买顾客的人数 lag和lead
1:起始行到当前行 rows between unbounded preceding and current row 按照每个name.每个ctime,从上往下加2:起始行到结束行 rows between current row and unbounded following 按照每个name.每个ctime,从下往上加3:Lag往下压 lag(ctime,1,"不知道")over(partition by id order month ) 往下压1行,4lead 往上抬,...
2020-08-20 14:49:19 811
原创 SPARK : SQL连续三天登录的用户
sid,dt,moneyshop1,2019-01-18,500shop1,2019-02-10,500shop1,2019-02-10,200shop1,2019-02-11,600shop1,2019-02-12,400shop1,2019-02-13,200shop1,2019-02-15,100shop1,2019-03-05,180shop1,2019-04-05,280shop1,2019-04-06,220shop2,2019-02-10,100shop2,2019-.
2020-08-19 20:38:02 322
原创 spark parquet!!!
parquet是列式存储,支持压缩如,50--200是name属性,200--300是age属性301--500是fv属性,这就是列式存储当我们拿取数据的时候,如name,那么就可以在50--200之间找,大大提高了效率,不像json,找数据需要全盘读取...
2020-08-18 22:46:00 91
原创 CSV写入jdbc
object CreateDataFrameFromJDBC { def main(args: Array[String]): Unit = { val spark = SparkSession.builder().appName(this.getClass.getSimpleName).master("local[*]").getOrCreate() //val df = spark.read.csv("bigdata\\user.csv") val properties.
2020-08-18 22:25:50 151
原创 Spark :CSV类型文件
读取数据只读取一行,在没有表头的情况下,读取不到文件的属性(string,age)import org.apache.spark.sql.SparkSessionimport org.apache.spark.sql.types.{DoubleType, IntegerType, StringType, StructField, StructType}object CreateDataFrameFromCSV { def main(args: Array[String]): Unit = {
2020-08-18 21:34:24 269
原创 将DataFrame转为Json文件
json在读取数据的时候会读取schema描述信息,读取全部数据,才能确定类型写出文件二种方式//df2.write.mode(SaveMode.Append).json("out/boy") df2.write.mode(SaveMode.Append).format("json").save("out2/boy")读取文件二种方式 //获取数据的schema信息,每一行都有读取,将描述信息返回Driver端了 //val df: DataFrame = spar...
2020-08-18 21:22:31 1709
原创 创建DataFrame
1:创建dataframe,dataframe=RDD+schema所以让RDD和schema连接起来是关键----------------------------------------------------------------------------------------------------------------------------简单数据1,张飞,21,北京,80.02,关羽,23,北京,82.03,赵云,20,上海,88.64,刘备,26,上海,83.0..
2020-08-18 21:01:41 117
原创 序列化问题和多线程问题
序列化问题闭包.函数内部引用了函数外部的类型(如果没有被序列化,就会报错)什么情况下只有一个stage,没有产生shuffle的情况下,那么这个stage就是resultTask每个job有且只有一个ResultTask,前面的都是shuffleMapTaskTask和ResultTask都继承了Task实现了Serializable函数内部引用了没有序列化的类型,当Task中引用了没有序列化的类型,执行程序就会触发 Task Not SerializableTask是在Drever生成.
2020-08-17 20:38:52 231
原创 sortBy如何排序和如何触发Action
在sortby中默认传入排序规则是ascending true.升序第一个参数是一个函数,该函数的也有一个带T泛型的参数,返回类型和RDD中元素的类型是一致的第三个参数是numPartitions,该参数决定排序后的RDD的分区个数,默认排序后的分区个数和排序之前的个数相等,即为this.partitions.size。有一个隐士转换,可以导入隐士转换也可以按照元组进行排序 val value1: RDD[(String, Int, Double)] = value.sortBy(x =&...
2020-08-17 17:04:28 1092
原创 top7
package TeacherTopN2import org.apache.spark.rdd.RDDimport org.apache.spark.{Partitioner, SparkConf, SparkContext}import scala.collection.mutableobject TeacherN07 { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName.
2020-08-17 16:48:47 83
原创 案例-使用单例对象加载规则数据
package cn._51doit.spark.day09import java.io.{BufferedReader, FileInputStream, InputStreamReader}import scala.collection.mutable.ArrayBufferobject IpRulesLoader { //使用IO流读数据,然后放入到一个ArrayBuffer //在object中定义的定义的数据是静态的,在一个JVM进程中,只有一份 val ipRu...
2020-08-17 11:58:37 136
原创 top8
package TeacherTopN2import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.rdd.{RDD, ShuffledRDD}object TeacherN08 { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("Teacher").setMaster("local[*].
2020-08-17 11:20:45 305
原创 top6
package TeacherTopN2import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.rdd.RDDimport scala.collection.mutableobject TeacherN06 { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("Teacher").se.
2020-08-17 10:42:28 170
原创 top5
package TeacherTopN2import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.rdd.RDDimport scala.collection.mutableobject TeacherN05 { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("Teacher")..
2020-08-17 10:41:57 62
原创 TopN4
package TeacherTopN2import org.apache.spark.{Partitioner, SparkConf, SparkContext}import org.apache.spark.rdd.RDDimport scala.collection.mutableobject TeacherN04 { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName.
2020-08-17 10:41:18 67
原创 广播变量写入mysql
package com._51doit.spark.Day07import java.sql.{Connection, Driver, DriverManager, PreparedStatement, SQLException}import com._51doit.spark.utils.IpUtilsimport org.apache.spark.broadcast.Broadcastimport org.apache.spark.{SparkConf, SparkContext}imp.
2020-08-15 20:12:28 132
原创 Spark:TopN003
package TeacherTopN2import org.apache.spark.{Partitioner, SparkConf, SparkContext}import org.apache.spark.rdd.RDDimport scala.collection.mutableobject TeacherN03 { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName..
2020-08-14 15:22:50 87
原创 Spark:TopN002
package Restartimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object TeacherTopN002 { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName(this.getClass.getCanonicalName).setMaster("loc..
2020-08-14 14:59:49 99
原创 Spark:TopN001
package Restartimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object TeacherTopN001 { def main(args: Array[String]): Unit = {/*//http://bigdata.51doit.cn/laozhao http://bigdata.51doit.cn/laozhao http://big..
2020-08-14 14:41:12 111
原创 Spark:将二表关联
package Restartimport com.alibaba.fastjson.{JSON, JSONException}import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object JoinOrderTable { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppN.
2020-08-14 14:22:06 235
原创 Spark:连续三天登录的用户
package Restartimport java.text.SimpleDateFormatimport java.util.{Calendar, Date}import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}//查询连续三天登录的用户object DataOne { def main(args: Array[String]): Unit = { val conf..
2020-08-14 13:44:31 127
原创 Spark:cache和persist和checkpoint
只缓存到内存cache底层调用的是persist方法,可以指定其他存储级别cache和persist方法,严格来说,不是Transformation,应为没有生成新的RDD,只是标记当前rdd要cache或persistcache、persist的使用场景:一个application多次触发Action,为了复用前面RDD计算好的数据,避免反复读取HDFS(数据源)中的数据和重复计算缓存,可以将数据缓存到内存或磁盘【executor所在的磁盘】,第一次触发action才放入到内存或磁盘,以后再出
2020-08-14 11:06:07 143
原创 Spark:repartition和coalesce
repartition底层调用的是coalesce(true)一定具有shuffle,它一般是将少分区变化为多分区repartition底层调用了mappartitionsRDD将传入的函数key生成随机数,value是数据本身shuffleRDD将随机生成的key进去你指定的分区--使用HashpartitioncoalesceRDD将迭代器压平mapPartition-将value数据取出---------------------------------------------.
2020-08-14 10:55:30 256
原创 Spark::groupByKey和reduceBykey 和collect
groupByKey和reduceByKey都具有shuffle都是聚合操作reduceByKey:具有预聚合,在局部聚合时将value进行相加或者指定操作,groupByKey:局部聚合时不指定value操作.reduceBykey相对groupByKey减少了网络传输collect测试环境源码注解中显示,将结果返回到Driver端,collect如果 返回数据太大会报错....
2020-08-14 10:29:48 182
原创 Spark:map和mappartition
map是对Rdd中 的每一个元素作用上一个函数,mappartition是将函数作用到partition如果需要写数据或者创建实例,那么应该选择partition
2020-08-14 10:13:13 367
原创 Spark:广播变量
1.0.1.0|1.0.3.255|16777472|16778239|亚洲|中国|福建|福州||电信|350100|China|CN|119.306239|26.0753021.0.8.0|1.0.15.255|16779264|16781311|亚洲|中国|广东|广州||电信|440100|China|CN|113.280637|23.1251781.0.32.0|1.0.63.255|16785408|16793599|亚洲|中国|广东|广州||电信|440100|China|CN|113.280
2020-08-14 10:05:28 390
原创 spark案例<难>
1:需求2:代码实现package Day07import java.text.SimpleDateFormatimport java.util.Dateimport org.apache.spark.rdd.RDDimport org.apache.spark.{Partitioner, SparkConf, SparkContext}import scala.collection.mutable object XiangMu { def main(a..
2020-08-13 23:26:16 104
原创 将Spark数据写入mysql中
package Day07import java.sql.{Connection, DriverManager, PreparedStatement, SQLException}import com._51doit.spark.utils.IpUtilsimport org.apache.spark.broadcast.Broadcastimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkCon...
2020-08-13 23:17:49 229
原创 Spark:glom
语法val newRdd = oldRdd.golm源码def glom() : org.apache.spark.rdd.RDD[scala.Array[T]] = { /* compiled code */ }1作用将每一个分区形成一个数组,形成新的RDD类型时RDD[Array[T]]例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, Spa.
2020-08-09 22:23:43 231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人