![](https://img-blog.csdnimg.cn/20200330224929466.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
spark
spark
小哇666
专注web/大数据
展开
-
Spark Streaming入门 - 数据处理api - 从多个socketstream中接收数据,执行union,word count统计
在158.158.4.49上开两个窗口,分别运行nc -lk 9998,nc -lk 9997输入数据的格式为 aa bb的样子,中间有空格,看以下代码就知道了唯一要注意的是local[*]package cn.taobao.sss;import org.apache.spark.api.java.StorageLevels;import org.apache.spark.api.java.function.FlatMapFunction;import org.apache.spark.api原创 2021-05-24 14:59:40 · 197 阅读 · 0 评论 -
pyspark 本地远程连接hive
#配置本地spark的环境,必须放在最前面import findsparkfindspark.init()print(findspark.find())from pyspark.sql import SparkSession#新建sparksessionsparksession = SparkSession.builder.master("local[*]").appName("hive_test_1") \ .config("hive.metastore.uris","thrif.原创 2021-05-18 15:39:50 · 2521 阅读 · 2 评论 -
pyspark读取mysql数据,并解决报错java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
直接将mysql的驱动jar包放到spark安装目录中的jars目录有些博文说是,此方法无效,但本人没有碰到,后期出现问题再修正代码 示例#配置本地spark的环境,必须放在最前面import findsparkfindspark.init()print(findspark.find())from pyspark.sql import SparkSession#新建sparksessionsparksession = SparkSession.builder.master("loc原创 2021-05-18 20:49:56 · 676 阅读 · 3 评论 -
pyspark报错解决 “py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.isEncryptionEnabled“
报错py4j.protocol.Py4JError: org.apache.spark.api.python.PythonUtils.isEncryptionEnabled does not exist in the JVM解决办法,添加如下前两行代码,放在操作spark之前#添加此代码import findsparkfindspark.init()#添加此代码from pyspark import SparkConf, SparkContext作用就是初始化找到本机安装的spark的原创 2021-05-14 10:04:03 · 9853 阅读 · 6 评论 -
Spark Streaming入门 - 从kafka读取数据,基于Direct模式 [主流,生产环境就使用这种模式]
1添加依赖<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming-kafka-0-8_2.11</artifactId> <version>2.2.0</version></dependency>2核心代码package c..原创 2021-05-10 18:46:52 · 206 阅读 · 0 评论 -
Spark Streaming入门 - foreachRDD算子使用 - 结果保存到mysql
1 添加依赖<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming_2.12</artifactId> <version>2.4.3</version></dependency><dependency>原创 2021-04-29 21:26:57 · 223 阅读 · 0 评论 -
Spark Streaming入门 - foreachRDD算子使用 - 单词计数(第二版)
1 用nc工具发送消息2 核心代码如下package cn.taobao;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.StorageLevels;import org.apache.spark.sql.*;import org.apache.spark.sql.types.DataTypes;import org.apache.spark.sql.types.StructField;i原创 2021-04-29 17:39:34 · 202 阅读 · 0 评论 -
Spark Streaming入门 - foreachRDD算子使用 - 用spark sql的方式来操作数据,单词计数(第一版)
1 用nc工具发送消息2 核心代码如下package cn.taobao;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.StorageLevels;import org.apache.spark.api.java.function.VoidFunction;import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row原创 2021-04-29 14:42:17 · 244 阅读 · 0 评论 -
spark常用RDD算子 - saveAsHadoopFiles
作用:顾名思义,就是写入到hdfs中def saveAsHadoopFiles[F <: OutputFormat[_, _]]( prefix: String, suffix: String, keyClass: Class[_], valueClass: Class[_], outputFormatClass: Class[F]) { dstream.saveAsHadoopFiles(prefix, suffix, key原创 2021-04-29 11:25:09 · 1435 阅读 · 0 评论 -
Spark Streaming入门 - 结果保存到hdfs文件系统中
1 先到49服务器上,用nc发送消息2 详细代码如下,注意:保存前先用repartition(1),不然会有很多小文件package cn.taobao;import org.apache.hadoop.io.NullWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapred.SequenceFileOutputFormat;import org.apache.hadoop.mapred.TextOut.原创 2021-04-29 11:11:42 · 1246 阅读 · 0 评论 -
Spark Streaming入门 - 数据处理api - updateStateByKey算子
1.说明SparkStreaming的一般是7天24小时不停息的运行,而在运行的时候,中间会有很多的状态,而有些状态我们需要一些操作,比如累计,更新或者其他的操作。那么如何将这些独立的状态联系起来就成了一种迫切的需求。2.介绍UpdateStateByKey的主要功能:1、为Spark Streaming中每一个Key维护一份state状态,state类型可以是任意类型的, 可以是一个自定义的对象,那么更新函数也可以是自定义的。2、通过更新函数对该key的状态不断更新,对于每个新的batch而原创 2021-04-28 20:33:59 · 185 阅读 · 0 评论 -
Spark Streaming入门 - 数据处理api - window算子
package cn.taobao;import org.apache.spark.api.java.StorageLevels;import org.apache.spark.streaming.Durations;import org.apache.spark.streaming.api.java.JavaDStream;import org.apache.spark.streaming.api.java.JavaReceiverInputDStream;import org.apache..原创 2021-04-28 15:03:59 · 128 阅读 · 0 评论 -
Spark Streaming入门 - 数据处理api - countByWindow,reduceByWindow,countByValueAndWindow算子使用
package cn.taobao;import org.apache.spark.api.java.StorageLevels;import org.apache.spark.streaming.Durations;import org.apache.spark.streaming.api.java.JavaDStream;import org.apache.spark.streaming.api.java.JavaPairDStream;import org.apache.spark.str.原创 2021-04-28 14:54:10 · 513 阅读 · 0 评论 -
Spark Streaming入门 - 数据处理api - transformToPair
大白话理解:每个流式的Dstream,其实底层也是通过rdd来操作,transform就是将Dstream转成rdd,就可以和其他的普通的rdd做各种运算操作1 新建zidian.txt文件24##少林寺欲将功夫融入足球培训运动员25##北京警方捣毁侵害公民信息团伙抓获299人26##北京发布雷电黄色预警傍晚至夜间将有大到暴雨27##聚划算成清仓专用问题产品充斥28##七夕前夜英仙座流星雨助兴我国处于最佳观测区30##报告称中国取代英国成世界第5大常规武器出口国2在158.158.4..原创 2021-04-28 13:51:15 · 385 阅读 · 0 评论 -
Spark Streaming入门 - 数据处理api - 从多个socketstream中接收数据,进行join操作
在158.158.4.49上开两个窗口,分别运行nc -lk 9998,nc -lk 9999输入数据的格式为 aa bb的样子,中间有空格,看以下代码就知道了唯一要注意的是local[*]package cn.taobao;import org.apache.spark.api.java.StorageLevels;import org.apache.spark.api.java.function.PairFunction;import org.apache.spark.streaming.D原创 2021-04-28 10:24:37 · 265 阅读 · 0 评论 -
Spark Streaming入门 - 监控某个目录的文件做为输入流
注意事项* 1、监控目录下的文件的格式必须是统一的 * 2、不支持嵌入文件目录 * 3、一旦文件移动到这个监控目录下,是不能变的,往文件中追加的数据是不会被读取的编写spark程序,实时读取某个目录的数据package cn.taobao;import org.apache.spark.api.java.function.FlatMapFunction;import org.apache.spark.api.java.function.Function2;import org....原创 2021-04-27 18:13:25 · 639 阅读 · 2 评论 -
Spark Streaming入门 - 从Queue队列接收数据 Demo,测试使用
package cn.taobao;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.function.Function2;import org.apache.spark.api.java.function.PairFunction;import org.apache.spark.streaming.Durations;import org.apache.spark.streaming.api.j.原创 2021-04-27 16:19:58 · 358 阅读 · 0 评论 -
spark-sql 操作 hdfs文件,服务器有kerberos安全认证的
前提:程序是放在服务器上运行,而非在自己电脑本机环境下运行1spark-sql 自己写的代码程序,不做任何改动2 关键是 spark-submit的--keytab,--principal参数如spark-submit --keytab /var/lib/hadoop-hdfs/hdfs.keytab --principal hdfs/hdfs@BAIDU.COM --class cn.baidu.service.ApplicationMain ./codeConvert-etl-1.0-...原创 2020-10-30 21:20:15 · 3188 阅读 · 0 评论 -
spark-submit 应用程序第三方jar文件
要点导航第一种方式:打包到jar应用程序 第二种方式:spark-submit 参数 --jars 第三种方式:spark-submit 参数 --packages 第四种方式:添加到spark的环境变量回到导航第一种方式:打包到jar应用程序操作:将第三方jar文件打包到最终形成的spark应用程序jar文件中应用场景:第三方jar文件比较小,应用的地方比较少回到导航第二种方式:spark-submit 参数 --jars操作:使用spark-submit提交命令的参数转载 2020-10-30 21:12:48 · 2587 阅读 · 0 评论 -
spark常用RDD算子 - saveAsTextFile、saveAsObjectFile 可保存到本地文件或hdfs系统中
saveAsTextFile函数原型def saveAsTextFile(path: String): Unitdef saveAsTextFile(path: String, codec: Class[_ <: CompressionCodec]): UnitsaveAsTextFile用于将RDD以文本文件的格式存储到文件系统中。从源码中可以看到,saveAsTextFile函数是依赖于saveAsHadoopFile函数,由于saveAsHadoopFile函数接受Pair..原创 2020-08-13 14:40:50 · 4060 阅读 · 0 评论 -
Spark Streaming入门-编程入口JavaStreamingContext的实例化,构造方法汇总
代码示例1SparkConf sparkConf = new SparkConf() .setAppName("spark-test-1") .setMaster("local[2]"); JavaStreamingContext ssc = new JavaStreamingContext(sparkConf, Durations.seconds(4));ssc.sparkContext().setLogLe...原创 2020-08-12 18:04:28 · 1395 阅读 · 0 评论 -
Spark Streaming入门 - 从Socket接收数据 实现wordCount统计单词个数
功能概述在158.158.4.49上运行nc -lk 9998,往9998端口发送数据编写代码,实现wordCount,Spark Streaming消费TCP Server(158.158.4.49)发过来的实时数据import org.apache.spark.api.java.StorageLevels;import org.apache.spark.api.java.function.FlatMapFunction;import org.apache.spark.api.java..原创 2020-08-12 17:38:55 · 442 阅读 · 0 评论 -
SPARK-SQL - join关联的api
准备文件users.json{"userId":"1", "userName":"Join", "age":23}{"userId":"3", "userName":"Katy", "age":23}{"userId":"4", "userName":"Mike", "age":21}{"userId":"2", "userName":"Jeffy", "age":45}{"userId":"5", "userName":"Av", "age":43}准备文件orders.json{原创 2020-08-12 11:34:53 · 398 阅读 · 0 评论 -
SPARK-SQL - groupBy分组聚合相关的api,pivot实现行转列
pivot实现行转列准备json文件{"id":"1", "orderId":"1", "name":"apple", "amount":4, "price":20.0, "userId":"1"}{"id":"2", "orderId":"2", "name":"book", "amount":5, "price":10.0, "userId":"1"}{"id":"3", "orderId":"3", "name":"cake", "amount":1, "price":200.0, "us原创 2020-08-12 11:03:27 · 594 阅读 · 0 评论 -
SPARK-SQL - group分组聚合api,agg()
准备orders.json文件{"id":"1", "userId":"1", "userName":"Join", "totalPrice":80.0,"qty":3.0}{"id":"2", "userId":"1", "userName":"Join", "totalPrice":50.0,"qty":3.0}{"id":"3", "userId":"2", "userName":"Jeffy", "totalPrice":200.0,"qty":3.0}{"id":"4", "use.原创 2020-08-11 22:49:47 · 1885 阅读 · 0 评论 -
SPARK-SQL - group分组聚合相关的api,groupBy().count(),groupBy().avg()等
准备orders.json文件{"id":"1", "userId":"1", "userName":"Join", "totalPrice":80.0,"qty":3.0}{"id":"2", "userId":"1", "userName":"Join", "totalPrice":50.0,"qty":3.0}{"id":"3", "userId":"2", "userName":"Jeffy", "totalPrice":200.0,"qty":3.0}{"id":"4", "userI原创 2020-08-11 22:33:05 · 2164 阅读 · 0 评论 -
SPARK-SQL - sort排序相关的api大全
排序方法汇总,默认都是升序sort()orderBy(),orderBy是基于sort实现的sortWithinPartitions() 按区排序,分区内有顺序,全局无序代码示例import org.apache.spark.api.java.function.ForeachPartitionFunction;import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.s原创 2020-08-11 20:40:33 · 1553 阅读 · 0 评论 -
SPARK-SQL - Column相关的api操作大全
获取一个列的方法直接列的名称 col() apply() expr函数 lit()返回个常量 column()其它apiwithColumn 增加一列withColumnRenamed 列重命名drop 删除列toDF 批量改列的名称代码示例import org.apache.spark.sql.SparkSession;import org.apache.spark.sql.Column;import org.apache.spark.sql.Dataset;impor原创 2020-08-11 20:05:43 · 1819 阅读 · 0 评论 -
SPARK-SQL 基础应用入门2 - udf函数,内置函数,createOrReplaceTempView等使用
import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.sql.SparkSession;import org.apache.spark.sql.api.java.UDF2;import org.apache.spark.sql.types.DataTypes;public class test_25 { public static void main(Str.原创 2020-08-11 18:03:58 · 391 阅读 · 0 评论 -
SPARK-SQL - 读写数据的时候使用分区 partitionBy()
关键代码partitionBy()dataset_1.write() .mode(SaveMode.Overwrite) .partitionBy("year", "month", "day") .parquet(Utils.BASE_PATH + "/trackerSession_partition");代码示例import org.apache.spark.sql.Dataset;impo.原创 2020-08-11 17:28:14 · 5731 阅读 · 0 评论 -
SPARK-SQL - RDD/Dataset/DataFrame的互相转换
转换用到的方法如下rdd(),as(),toDF()代码示例import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.rdd.RDD;import org.apache.spark.sql.*;import pojo.Dog;import java.util.Arrays;import java.util.List;原创 2020-08-11 16:45:31 · 411 阅读 · 0 评论 -
SPARK-SQL - Dataset创建方式汇总
创建方式如下从RDD[T] + Encoder中创建 从List + Encoder中创建示例代码import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.rdd.RDD;import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Encoder;原创 2020-08-11 16:17:22 · 1143 阅读 · 0 评论 -
SPARK-SQL - DataFrame创建方式汇总
创建DataFrame的方式从JavaRDD<T>与类类型中创建 从List<T>与类类型中创建 从JavaRDD<Row>与schema中创建 从List<Row>与schema中创建 从外部数据源中创建 如spark.read().json等import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import o原创 2020-08-11 15:51:25 · 228 阅读 · 0 评论 -
SPARK-SQL - 创建和操作 临时视图,全局视图
import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.sql.SparkSession;public class test20 { public static void main(String[] args) throws Exception { SparkSession spark = SparkSession .原创 2020-08-11 15:27:03 · 3237 阅读 · 0 评论 -
SPARK-SQL - 创建和操作内部表,外部表
注意:以下操作中,内部表和外部表使用的数据都是parquet格式的数据,其它类型的数据不行示例代码import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.sql.SparkSession;public class test19 { public static void main(String[] args) throws Exception {原创 2020-08-11 14:52:38 · 3851 阅读 · 0 评论 -
SPARK-SQL - catalog()操作数据库,表等相关的元信息
import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.sql.SparkSession;import org.apache.spark.sql.catalog.Database;import org.apache.spark.sql.catalog.Table;public class test18 { public static void main(Str.原创 2020-08-11 13:10:49 · 2060 阅读 · 0 评论 -
SPARK-SQL 写数据的时候,Save Modes几种存储形式
SaveMode.ErrorIfExists(对应着字符串"error"):表示如果目标文件目录中数据已经存在了,则抛异常(这个是默认的配置)SaveMode.Append(对应着字符串"append"):表示如果目标文件目录中数据已经存在了,则将数据追加到目标文件中SaveMode.Overwrite(对应着字符串"overwrite"):表示如果目标文件目录中数据已经存在了,则用需要保存的数据覆盖掉已经存在的数据SaveMode.Ignore(对应着字符串为:"ignore"):表示如果目标文件.原创 2020-08-11 11:34:36 · 2377 阅读 · 0 评论 -
SPARK-SQL 通过load(),write()读写各种数据源
读取(load)和保存(write)操作,操作的文件的数据格式默认是parquet也可以在load和write的时候,通过format指定数据的格式如:spark.read().format("json").load()deviceInfoDF.write().mode(SaveMode.Overwrite).format("orc").save代码示例import org.apache.spark.sql.Dataset;import org.apache.spark.sql.R.原创 2020-08-11 11:25:30 · 4602 阅读 · 0 评论 -
SPARK-SQL 通过JDBC读写Mysql数据库
写数据库表的参数truncate:仅适用于write数据。当SaveMode.Overwrite启用时,此选项会truncate在MySQL中的表,而不是删除,再重建其现有的表。这可以更有效,并且防止表元数据(例如,索引)被去除。但是,在某些情况下,例如当新数据具有不同的模式时,它将无法工作。它默认为false。createTableColumnTypes:一般用于配置特殊的分区或者数据库配置,比如 CREATE TABLE t (name string) ENGINE=InnoDBcreate原创 2020-08-11 10:49:47 · 1016 阅读 · 0 评论 -
SPARK-SQL 读取外部数据源 parquet文件的读写
相关的资源文件地址链接:https://pan.baidu.com/s/1QGQIrVwg56g9eF16ERSLwQ 提取码:7v8nparquet 文件读写示例import org.apache.spark.sql.Dataset;import org.apache.spark.sql.Row;import org.apache.spark.sql.SaveMode;import org.apache.spark.sql.SparkSession;public class t原创 2020-08-10 15:55:24 · 485 阅读 · 0 评论