摘要:
1. SparkSQL支持的数据源 Hive Scala内存中数据--集合 支持从RDD读取数据作SQL操作 支持从外部存储文件读取数据json,csv,普通结构文本文件 支持从关系型数据库读取数据处理(MySQL,SQL Server,Oracle) 2. SparkSQL入口 SQLContex 阅读全文
摘要:
RDD: 以Person为类型参数,但是Spark框架本身不了解Person类的内部结构。 DataFrame: DataFrame每一行的类型固定为Row, 每一列的值没法直接访问,只有通过解析才能获取各个字段的值。 DataSet: DataFrame也可以叫DataSet[Row],每一行类型 阅读全文
摘要:
![](https://img2022.cnblogs.com/blog/2487693/202208/2487693-20220825221328631-981642277.png) 阅读全文
摘要:
1. 创建RDD数据集 1. 从现有的Scala集合创建RDD数据集 parallelize(Seq, numSlices): 定义: Seq:Array或者List numSlices:代表创建的RDD的分区数,如果没传递,有一个默认值,默认分区就是spark.default.parallelis 阅读全文
摘要:
1. 要求 1. 过去用户的行为日志数据中响应状态码大于等于400的数据 2. 并且需要查看一下合法的数据有多少条,不合法的数据有多少条 3. 将处理完成的结果保存到HDFS分布式文件存储系统上 2. 代码:使用自带累加器 /* 180.153.11.130 - - 2018-03-18 11:42 阅读全文
摘要:
广播变量有个要求,广播变量是只读的,分区中只能获取广播变量的值,无法更改广播变量的值 优势:节省了磁盘io,数据量越大,效果越明显 使用:直接通过广播变量的.value函数获取广播变量的值 案例 package videovar import org.apache.spark.rdd.RDD imp 阅读全文
摘要:
【注意】: 如果要使用Spark自带的Long类型的累加器,直接sc.longAccumulator()获取使用即可,底层累加器会自动注册 但是如果我们想要使用自定义累加器,必须通过SparkContext的register(累加器对象名)显示注册才能使用,否则累加器不生效 累加器对于分区,只写不读 阅读全文
摘要:
HighWordCountAccumulator.scala package accumulator import org.apache.spark.util.AccumulatorV2 import scala.collection.mutable /* 继承AccumulatorV2类, 传递两 阅读全文
摘要:
1.累加器 object AccCode { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setMaster("local[2]").setAppName("sum") val sc = new Sp 阅读全文
摘要:
分区器只有键值对类型的RDD才可以使用分区器去定义分区规则,非键值对类型RDD也有分区,但是数值类型的rdd是均匀分区的,不可把控的 1. HashPartitioner 定义:HashPartitioner 按照key值的hashcode的不同 分到不同分区里面 弊端:可能会造成数据倾斜问题(每一 阅读全文