
Spark
万事无Bug
南昌大学 低调学Java
展开
-
Structured Streaming输出模式
Structured Streaming输出模式前言:Structured Streaming的数据抽象是DataSet和DataFrame,这两种数据流的输出,需要调用writeStream方法。以下是一个示例:import org.apache.spark.SparkContextimport org.apache.spark.sql.{DataFrame, Dataset, SparkSession}object StructuredFromSocket { def main(arg原创 2021-10-20 15:39:29 · 479 阅读 · 0 评论 -
Structured Streaming获取Socket数据源
Structured Streaming获取Socket数据源前言:由于Structured Streaming是基于SparkSQL,且数据抽象是DataSet,DataFrame,因此创建SparkSession即可代码:import org.apache.spark.SparkContextimport org.apache.spark.sql.{DataFrame, Dataset, SparkSession}object StructuredFromSocket { def ma原创 2021-10-20 15:16:24 · 226 阅读 · 0 评论 -
Structured Streaming编程模型
Structured Streaming编程模型编程模型:无界表/动态表格数据抽象:DataFrame/DataSetStructured Streaming编程模型逻辑上就是一个不断增长的动态表格,因此方便使用简单的sql操作原创 2021-10-20 11:19:45 · 141 阅读 · 0 评论 -
Structured Streaming介绍
Structured Streaming介绍介绍前,先说说Spark Streaming的不足Spark Streaming不足总结下就是这几点Structured Streaming介绍原创 2021-10-20 11:11:29 · 112 阅读 · 0 评论 -
SparkSQL自定义UDF函数
SparkSQL自定义UDF函数概念import org.apache.spark.sql.SparkSessionobject Udf { def main(args: Array[String]): Unit = { //准备环境 var session:SparkSession=SparkSession.builder().master("local[*]").appName("xiaobai").getOrCreate() var sc=session.spark原创 2021-10-20 10:57:31 · 279 阅读 · 0 评论 -
SparkSQL查询
SparkSQL查询两种查询方式:代码:import org.apache.spark.rdd.RDDimport org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}import org.apache.spark.sql.{DataFrame, Row, SparkSession}object Demo_SparkSession { //花式查询 def main(args: Arr原创 2021-10-20 10:14:59 · 1413 阅读 · 0 评论 -
RDD转化成DataFrame
RDD转化成DataFrame这里使用自定义Schema的方式将RDD转换成DaraFrame核心:使用createDataFrame()方法,传入RDD[Row]和StructType对象,创建一个DataFrameimport org.apache.spark.rdd.RDDimport org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}import org.apache.spark.sq原创 2021-10-19 20:03:16 · 921 阅读 · 0 评论 -
DataFrame和DataSet
DataFrame和DataSet概念:DataFrame和DataSet是SparkSQL的数据抽象,底层是RDD。存储形式:DataFrame(没有泛型是为了兼容Python):DataFrame = RDD - 泛型 + 字段 + SQL操作 + 优化本质上DataFrame就是在RDD上进一步封装,增加了SQL操作。RDD是分布式集合,而DataFrame就是一个分布式表!!DataSetDataSet = DataFrame +泛型相比于DataFrame ,DataSet由原创 2021-10-19 16:51:39 · 880 阅读 · 0 评论 -
Spark手动提交偏移量
Spark手动提交偏移量//strem是读取的数据流,可以是kafka数据stream.foreachRDD( { rdd => //对rdd的操作 rdd.flatMap(s => { var s1 = s.value().replace(",", "") var s2 = s1.replace(".", "") var s3 = s2.replace("?", "")原创 2021-10-19 16:05:42 · 371 阅读 · 0 评论 -
Spark窗口计算
Spark窗口计算依然使用wordcount的demo,这次不使用reduceByKey,而是reduceByKeyAndWindow。在reduceByKey的基础上,增加对窗口的限制。代码import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.streaming.{Seconds, StreamingContext}object win { def main(args: Array[String])原创 2021-10-19 15:06:23 · 290 阅读 · 0 评论 -
Spark共享变量
Spark共享变量概念:使用示范:演示案例:统计文本中每个单词出现次数,以及特殊字符的总数。import org.apache.spark.{SparkConf, SparkContext}import org.sparkproject.jetty.util.StringUtilobject ShareVariable { def main(args: Array[String]): Unit = { var conf = new SparkConf().setMaster("原创 2021-10-19 11:57:09 · 122 阅读 · 0 评论 -
reduceByKey和groupByKey的区别
reduceByKey和groupByKey的区别两者都是先根据关键字分组,然后再聚合。不同点在于:reduceByKey在分区内会进行预聚合,而后再将所有分区的数据按照关键字来分组聚合。而groupByKey则不会先进行预聚合,它直接将所有分区的数据一起分组再聚合。大多数情况下,reduceByKey会比groupByKey性能更好。groupByKey:直接分组聚合reduceByKey:先在各个分区预聚合,再分组聚合...原创 2021-10-18 20:55:40 · 3437 阅读 · 0 评论 -
Spark读取kafka数据进行wordCount存入Redis
Spark读取kafka数据进行wordCount存入Redis依赖 <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.1.2</versio原创 2021-10-18 17:36:05 · 257 阅读 · 0 评论 -
Spark读取kafka数据实时单词计数(WordCount)
Spark读取kafka数据实时单词计数(WordCount)依赖: <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.1.2</versio原创 2021-10-13 11:54:34 · 428 阅读 · 0 评论 -
Spark读取MySQL
Spark读取MySQLimport org.apache.spark.SparkConf;import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.sql.SparkSession;import java.util.Properties;public class FromMySQL { public static void main(String[] args原创 2021-10-12 17:30:19 · 1095 阅读 · 0 评论 -
Spark写数据存入MySQL
Spark写数据存入MySQL依赖: <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.1.2</version> &l原创 2021-10-12 10:33:14 · 2958 阅读 · 0 评论 -
Spark实时单词计数(WordCount)
Spark实时单词计数(WordCount)前言:这里我们使用netcat来作为数据源,在cmd中使用netcat向本机固定端口发送数据,而实时将单词书数量输出在控制台。依赖 <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</art原创 2021-10-09 15:15:17 · 493 阅读 · 0 评论 -
Spark实现单词计数(Java)
Spark实现单词计数(Java)原理:将存储字符串的普通RDD通过flatMap按照空格分割成单个的单词存储在新的RDD中,再将此RDD转化成PairRDD,单词作为键,而值全部设置为1.最后将所有键值对的value加起来,得到的数就是单词数量。 JavaRDD<String> rdd = sc.parallelize(Arrays.asList("xiaobai is a big boss", "is it right", "sure you are right"));原创 2021-09-29 20:52:09 · 777 阅读 · 0 评论 -
Pair RDD创建及转化
Pair RDD概念:Pair RDD即存储键值对的RDD,期内每个对象都是键值对的形式。Java创建PairRDD需要通过一个普通的RDD,然后通过mapToPair方法将其转化成PairRDD.例子:将普通RDD中的字符串,取出字符串的第一个单词作为主键,然后生成一个PairRDD JavaRDD<String> rdd = sc.parallelize(Arrays.asList("xiaobai is a big boss", "is it right", "原创 2021-09-29 20:21:16 · 727 阅读 · 0 评论 -
RDD之fold()方法
RDD之fold()方法简述:fold()和reduce()一样的,但是fold()需要提供初始值。直接看代码: //分成2个区 JavaRDD<Integer> numRdd= sc.parallelize(Arrays.asList(1,2,3,4),2); //fold注意:计算每个分区之后还要合并分区结果,合并时也需要加上初始值 Integer fold = numRdd.fold(10, new Function2&原创 2021-09-29 17:44:48 · 435 阅读 · 0 评论 -
RDD常用转换操作即示例
RDD常用转换操作即示例1、flatMap()将函数应用于 RDD 中的每个元素,将返回的迭代器的所有内容构成新的 RDD。通常用来切分单词示例: SparkConf sparkConf = new SparkConf().setAppName("xiaobai").setMaster("local"); JavaSparkContext sc = new JavaSparkContext(sparkConf); JavaRDD<String>原创 2021-09-29 16:39:38 · 1990 阅读 · 0 评论 -
向Spark中传递函数
向Spark中传递函数前言:.Spark 的大部分转化操作和一部分行动操作,都需要依赖用户传递的函数来计算。在支持的三种主要语言中,向 Spark 传递函数的方式略有区别。 Java 中,Spark操作需要的函数,是由作为实现了 Spark 的org.apache.spark.api.java.function 包中的任一函数接口的对象来传递的。根据不同的返回类型,定义了一些不同的接口。标准的接口当RDD存储的是普通对象时(非键值对),标准的接口如下图、...原创 2021-09-29 15:54:04 · 224 阅读 · 0 评论 -
Spark入门基础
Spark入门基础前言:Spark 可以通过 Python、Java 或 Scala 来使用 。Spark 本身是用 Scala 写的,运行在 Java 虚拟机(JVM)上。要在电脑或集群上运行Spark,要做的准备工作只是安装 Java 6 或者更新的版本。如果希望使用 Python 接口,你还需要一个 Python 解释器(2.6 以上版本)。Spark 尚不支持 Python 32。这里本人所作演示全部基于Java 8,如果仅仅实在单机上学习Spark,只需要添加Spark的Maven依赖即可原创 2021-09-29 15:36:10 · 375 阅读 · 0 评论