01 2021 档案
摘要:input { kafka{ bootstrap_servers => ["18.3.10.53:9092,18.3.10.54:9092,19.3.10.55:9092,19.3.10.56:9092,19.3.10.57:9092,19.3.10.91:9092,19.3.10.92:9092,
阅读全文
摘要:https://leetcode-cn.com/problems/two-sum/ 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 你可以按
阅读全文
摘要:功能需求: 调度 与数据质量应该并行进行开发设计 1、ETL任务设计时均需要设计为失败可重跑:失败的原因包括源端数据存在问题、数据库服务重启等等 2、ETL任务设计时需要设计为失败自动尝试; 2、ETL任务应该可以实现可视化、便于快速查看依赖关系 3、ETL中数据质量的check应该发生在跨系统时刻
阅读全文
摘要:1、save to hdfs json file spark.sparkContext.setLogLevel("error")val data=spark.read.json("hdfs://cslcdip/home/dip/lzm/sparkdata/people.json")data.writ
阅读全文
摘要:package com.cslc import org.apache.hadoop.conf.Configuration import org.apache.hadoop.fs.Path import scala.collection.JavaConversions._ import org.apa
阅读全文
摘要:1、来自外部文件json val data=spark.read.json("hdfs://cslcdip/home/dip/lzm/sparkdata/people.json") println(data.schema) data.show() 2、来自json格式的RDD val nameRDD
阅读全文
摘要:1、配置hadoop环境并且制定 VM 2、配置hive的依赖包 <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-hive_2.11</artifactId> <version>2.3.0</version> <!
阅读全文
摘要:一般情况下,一个客户端指定一个集群,但是存在一个客户端指定多个集群的情况,这种情况下,需要动态调整配置文件 //配置文件可以通过传参或者数据库进行读取 package com.cslc import org.apache.hadoop.conf.Configuration import org.ap
阅读全文
摘要:累加器原理图: 累加器创建: sc.longaccumulator("") sc.longaccumulator sc.collectionaccumulator() sc.collectionaccumulator sc.doubleaccumulator() sc.doubleaccumulat
阅读全文
摘要:如何理解广播变量? 适用场景:大变量,比如100M以上的大集合。算子函数中使用到外部变量时,默认情况下,Spark会将该变量复制多个副本,通过网络传输到task中,此时每个task都有一个变量副本。如果变量本身比较大的话(比如100M,甚至1G),那么大量的变量副本在网络中传输的性能开销,以及在各个
阅读全文
摘要:countByKey 和 countByValue都是 action算子 ,结果集均在driver端,输出时不需要单独做collect spark.sparkContext.setLogLevel("error") val bd=spark.sparkContext.parallelize(List
阅读全文
摘要:zip transformation算子,将两个RDD中的元素(KV格式/非KV格式)变成一个KV格式的RDD,两个RDD的每个分区元素个数必须相同。 spark.sparkContext.setLogLevel("error") spark.sparkContext.setLogLevel("er
阅读全文
摘要:mapPartitionWithindex transformation算子,每次输入是一个分区的数据,并且传入数据的分区号 spark.sparkContext.setLogLevel("error")val kzc=spark.sparkContext.parallelize(List(("hi
阅读全文
摘要:foreachPartition action 算子,与foreach相比,foreach每次输入的是一行数据,而foreachPartition每次输入的是一个分区的数据(iterator) result2.foreachPartition(x=>{ println("**********") w
阅读全文
摘要:mapPartition 是一个transformation 算子,主要针对需要建立连接的程序,比如数据写入数据库。 val kzc=spark.sparkContext.parallelize(List(("hive",8),("apache",8),("hive",30),("hadoop",1
阅读全文
摘要:union、intersection subtract 都是transformation 算子 1、union 合并2个数据集,2个数据集的类型要求一致,返回的新RDD的分区数是合并RDD分区数的总和; val kzc=spark.sparkContext.parallelize(List(("hi
阅读全文
摘要:join,leftOuterJoin,rightOuterJoin,fullOuterJoin 都是transformation类别的算子 作用在K,V格式的RDD上。根据K进行连接,对(K,V)join(K,W)返回(K,(V,W)) join后的分区数是多的那个的分区 join val kzc=
阅读全文
摘要:action算子会触发spark进行运算,用于job划分,一个action算子就是一个job。 带有shuffle的算子用于划分stage(一个分区的数据去往多个分区),例如reduceByKey、 action算子如下: 1、count() 返回数据集中的元素数。会在结果计算完成后回收到Drive
阅读全文
摘要:sortByKey和sortBy都是transforamation算子; sortByKey 源码如下: def sortByKey(ascending: Boolean = true, numPartitions: Int = self.partitions.length) : RDD[(K, V
阅读全文
摘要:reduceBykey是一个transformation 算子 reduceByKey: 使用 func 函数合并具有相同键的值。对于每个key对应的多个value进行了merge操作,最重要的是它能够先在本地进行merge操作。merge可以通过func自定义。 groupByKey : 对每个k
阅读全文
摘要:sample算子通常用于抽样,是一个transformation算子 参数:withReplacement=true代表有放回抽样 参数:fraction 代表抽样的比例 使用: data.sample(withReplacement=true,fraction = 0.5).collect().f
阅读全文
摘要:flatMap 算子在word count中经常使用,是一个transformation 算子 1、如果使用map val arr=sc.parallelize(Array(("A",1),("B",2),("C",3))) arr.map(x=>(x._1+x._2)).collect.forea
阅读全文
摘要:1、匿名函数 (参数:参数类型)=>函数体 匿名函数没有名字,使用 val f=(参数:参数类型)=>函数体 def f=(参数:参数类型)=>函数体 def test= (x:Int)=>{x*2} val test2=(x:Int)=>{x*3} println(test(2)) println
阅读全文
摘要:1、与java switch类似 package com.cslc.day3 import scala.util.Random object MatchApp { def main(args: Array[String]): Unit = { val names=Array("liu","wang"
阅读全文
摘要:scala 可变列表与不可变链表 package com.cslc.day2 object listApp { def main(args: Array[String]): Unit = { val l=List(1,2,3,4,5) println(l.head) println(l.tail)
阅读全文
摘要:scala不可变数组和可变数组 package com.cslc.day2 object ArrayApp extends App { /* * 不可变数组 * */ //通过new和赋值进行初始化 val a:Array[String]=new Array[String](5) println(a
阅读全文
摘要:object是静态的,只能做一次加载,调用时,不需要进行new class 类需要做new 新的对象,通过对象进行方法和属性调用trait 类是接口 1、与java类型,class 类里面有变量(类内部声明变量需要声明类型和占位符,或者初始化默认值;在类名后边进行变量定义只需要声明类型) packa
阅读全文