Maven+Eclipse+SparkStreaming+Kafka整合
版本号:
maven3.5.0 scala IDE for Eclipse:版本(4.6.1) spark-2.1.1-bin-hadoop2.7 kafka_2.11-0.8.2.1 JDK1.8
基础环境:
Maven3.5.0安装与配置+Eclipse应用
Maven下载项目依赖jar包和使用方法
maven中把依赖的JAR包一起打包
MAVEN Scope使用
一、指定JDK为1.8
在pom.xml配置文件中添加以下参数即可:
- <properties>
 - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 - <encoding>UTF-8</encoding>
 - <java.version>1.8</java.version>
 - <maven.compiler.source>1.8</maven.compiler.source>
 - <maven.compiler.target>1.8</maven.compiler.target>
 - </properties>
 
- <plugin>
 - <groupId>org.apache.maven.plugins</groupId>
 - <artifactId>maven-compiler-plugin</artifactId>
 - <configuration>
 - <source>1.8</source>
 - <target>1.8</target>
 - </configuration>
 - </plugin>
 
配置之后的pom.xml文件如下:
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 - <modelVersion>4.0.0</modelVersion>
 - <groupId>Test</groupId>
 - <artifactId>test</artifactId>
 - <version>0.0.1-SNAPSHOT</version>
 - <packaging>jar</packaging>
 - <name>test</name>
 - <url>http://maven.apache.org</url>
 - <properties>
 - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 - <encoding>UTF-8</encoding>
 - <!-- 配置JDK为1.8 -->
 - <java.version>1.8</java.version>
 - <maven.compiler.source>1.8</maven.compiler.source>
 - <maven.compiler.target>1.8</maven.compiler.target>
 - </properties>
 - <dependencies>
 - <dependency>
 - <groupId>junit</groupId>
 - <artifactId>junit</artifactId>
 - <version>3.8.1</version>
 - <scope>test</scope>
 - </dependency>
 - </dependencies>
 - <build>
 - <plugins>
 - <!-- 配置JDK为1.8 -->
 - <plugin>
 - <groupId>org.apache.maven.plugins</groupId>
 - <artifactId>maven-compiler-plugin</artifactId>
 - <configuration>
 - <source>1.8</source>
 - <target>1.8</target>
 - </configuration>
 - </plugin>
 - <!-- 配置打包依赖包maven-assembly-plugin -->
 - <plugin>
 - <artifactId> maven-assembly-plugin </artifactId>
 - <configuration>
 - <descriptorRefs>
 - <descriptorRef>jar-with-dependencies</descriptorRef>
 - </descriptorRefs>
 - <archive>
 - <manifest>
 - <mainClass></mainClass>
 - </manifest>
 - </archive>
 - </configuration>
 - <executions>
 - <execution>
 - <id>make-assembly</id>
 - <phase>package</phase>
 - <goals>
 - <goal>assembly</goal>
 - </goals>
 - </execution>
 - </executions>
 - </plugin>
 - </plugins>
 - </build>
 - </project>
 
二、配置Spark依赖包
查看spark-2.1.1-bin-hadoop2.7/jars目录下的jar包版本
到maven远程仓库http://mvnrepository.com中搜索对应jar包即可。
1、配置spark-core_2.11-2.1.1.jar
往pom.xml文件中添加以下配置:
- <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.11 -->
 - <dependency>
 - <groupId>org.apache.spark</groupId>
 - <artifactId>spark-core_2.11</artifactId>
 - <version>2.1.1</version>
 - <scope>runtime</scope>
 - </dependency>
 
为了后面打包时把依赖包也一起打包,需要把<scope>provided</scope>配置成<scope>runtime</scope>。
2、配置spark-streaming_2.11-2.1.1.jar
往pom.xml文件中添加以下配置:
- <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming_2.11 -->
 - <dependency>
 - <groupId>org.apache.spark</groupId>
 - <artifactId>spark-streaming_2.11</artifactId>
 - <version>2.1.1</version>
 - <scope>runtime</scope>
 - </dependency>
 
为了后面打包时把依赖包也一起打包,需要把<scope>provided</scope>配置成<scope>runtime</scope>。
三、配置Spark+Kafka
1、配置spark-streaming-kafka-0-8_2.11-2.1.1.jar
往pom.xml文件中添加以下配置:
- <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-kafka-0-8_2.11 -->
 - <dependency>
 - <groupId>org.apache.spark</groupId>
 - <artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
 - <version>2.1.1</version>
 - </dependency>
 
四、pom.xml完整配置内容
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 - <modelVersion>4.0.0</modelVersion>
 - <groupId>Test</groupId>
 - <artifactId>test</artifactId>
 - <version>0.0.1-SNAPSHOT</version>
 - <packaging>jar</packaging>
 - <name>test</name>
 - <url>http://maven.apache.org</url>
 - <properties>
 - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 - <encoding>UTF-8</encoding>
 - <!-- 配置JDK为1.8 -->
 - <java.version>1.8</java.version>
 - <maven.compiler.source>1.8</maven.compiler.source>
 - <maven.compiler.target>1.8</maven.compiler.target>
 - </properties>
 - <dependencies>
 - <dependency>
 - <groupId>junit</groupId>
 - <artifactId>junit</artifactId>
 - <version>3.8.1</version>
 - <scope>test</scope>
 - </dependency>
 - <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-core_2.11 -->
 - <dependency>
 - <groupId>org.apache.spark</groupId>
 - <artifactId>spark-core_2.11</artifactId>
 - <version>2.1.1</version>
 - <scope>runtime</scope>
 - </dependency>
 - <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming_2.11 -->
 - <dependency>
 - <groupId>org.apache.spark</groupId>
 - <artifactId>spark-streaming_2.11</artifactId>
 - <version>2.1.1</version>
 - <scope>runtime</scope>
 - </dependency>
 - <!-- https://mvnrepository.com/artifact/org.apache.spark/spark-streaming-kafka-0-8_2.11 -->
 - <dependency>
 - <groupId>org.apache.spark</groupId>
 - <artifactId>spark-streaming-kafka-0-8_2.11</artifactId>
 - <version>2.1.1</version>
 - </dependency>
 - </dependencies>
 - <build>
 - <plugins>
 - <!-- 配置JDK为1.8 -->
 - <plugin>
 - <groupId>org.apache.maven.plugins</groupId>
 - <artifactId>maven-compiler-plugin</artifactId>
 - <configuration>
 - <source>1.8</source>
 - <target>1.8</target>
 - </configuration>
 - </plugin>
 - <!-- 配置打包依赖包maven-assembly-plugin -->
 - <plugin>
 - <artifactId> maven-assembly-plugin </artifactId>
 - <configuration>
 - <descriptorRefs>
 - <descriptorRef>jar-with-dependencies</descriptorRef>
 - </descriptorRefs>
 - <archive>
 - <manifest>
 - <mainClass></mainClass>
 - </manifest>
 - </archive>
 - </configuration>
 - <executions>
 - <execution>
 - <id>make-assembly</id>
 - <phase>package</phase>
 - <goals>
 - <goal>assembly</goal>
 - </goals>
 - </execution>
 - </executions>
 - </plugin>
 - </plugins>
 - </build>
 - </project>
 
五、本地开发spark代码上传spark集群服务并运行
JavaDirectKafkaCompare.java
- package com.spark.main;
 - import java.util.HashMap;
 - import java.util.HashSet;
 - import java.util.Arrays;
 - import java.util.Iterator;
 - import java.util.Map;
 - import java.util.Set;
 - import java.util.regex.Pattern;
 - import scala.Tuple2;
 - import kafka.serializer.StringDecoder;
 - import org.apache.spark.SparkConf;
 - import org.apache.spark.api.java.function.*;
 - import org.apache.spark.streaming.api.java.*;
 - import org.apache.spark.streaming.kafka.KafkaUtils;
 - import org.apache.spark.streaming.Durations;
 - public class JavaDirectKafkaCompare {
 - public static void main(String[] args) throws Exception {
 - /**
 - * setMaster("local[2]"),至少要指定两个线程,一条用于用于接收消息,一条线程用于处理消息
 - * Durations.seconds(2)每两秒读取一次kafka
 - */
 - SparkConf sparkConf = new SparkConf().setAppName("JavaDirectKafkaWordCount").setMaster("local[2]");
 - JavaStreamingContext jssc = new JavaStreamingContext(sparkConf, Durations.seconds(2));
 - /**
 - * checkpoint("hdfs://192.168.168.200:9000/checkpoint")防止数据丢包
 - */
 - jssc.checkpoint("hdfs://192.168.168.200:9000/checkpoint");
 - /**
 - * 配置连接kafka的相关参数
 - */
 - Set<String> topicsSet = new HashSet<>(Arrays.asList("test"));
 - Map<String, String> kafkaParams = new HashMap<>();
 - kafkaParams.put("metadata.broker.list", "192.168.168.200:9092");
 - // Create direct kafka stream with brokers and topics
 - JavaPairInputDStream<String, String> messages = KafkaUtils.createDirectStream(
 - jssc,
 - String.class,
 - String.class,
 - StringDecoder.class,
 - StringDecoder.class,
 - kafkaParams,
 - topicsSet
 - );
 - // Get the lines, split them into words, count the words and print
 - /**
 - * _2()获取第二个对象的值
 - */
 - JavaDStream<String> lines = messages.map(new Function<Tuple2<String, String>, String>() {
 - @Override
 - public String call(Tuple2<String, String> tuple2) {
 - return tuple2._2();
 - }
 - });
 - String sfzh = "432922196105276721";
 - JavaDStream<String> wordCounts = lines.filter(new Function<String, Boolean>(){
 - @Override
 - public Boolean call(String s) throws Exception {
 - // TODO Auto-generated method stub
 - /**
 - * 通过身份证号筛选出相关数据
 - */
 - if(s.contains(sfzh)){
 - System.out.println("比对出来的结果:" + s);
 - return true;
 - }
 - return false;
 - }
 - });
 - wordCounts.print();
 - // Start the computation
 - jssc.start();
 - jssc.awaitTermination();
 - }
 - }
 
右键Run As ------>Maven install,运行成功之后,会在target目录生成一个test-0.0.1-SNAPSHOT-jar-with-dependencies.jar,把该jar包复制到LInux集群环境下的SPARK_HOME/myApp目录下:
执行命令:
- cd /usr/local/spark/spark-2.1.1-bin-hadoop2.7;
 - bin/spark-submit --class "com.spark.main.JavaDirectKafkaCompare" --master local[4] myApp/test-0.0.1-SNAPSHOT-jar-with-dependencies.jar;
 
六、附上离线Maven仓库
下载地址: 链接:http://pan.baidu.com/s/1eS7Ywme 密码:y3qz
Maven+Eclipse+SparkStreaming+Kafka整合的更多相关文章
- SparkStreaming+Kafka整合
		
SparkStreaming+Kafka整合 1.需求 使用SparkStreaming,并且结合Kafka,获取实时道路交通拥堵情况信息. 2.目的 对监控点平均车速进行监控,可以实时获取交通拥堵情 ...
 - 【SparkStreaming学习之三】 SparkStreaming和kafka整合
		
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...
 - 【转】Spark Streaming和Kafka整合开发指南
		
基于Receivers的方法 这个方法使用了Receivers来接收数据.Receivers的实现使用到Kafka高层次的消费者API.对于所有的Receivers,接收到的数据将会保存在Spark ...
 - Spring Kafka整合Spring Boot创建生产者客户端案例
		
每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 创建一个kafka-producer-master的maven工程.整个项目结构如下: ...
 - spark第十篇:Spark与Kafka整合
		
spark与kafka整合需要引入spark-streaming-kafka.jar,该jar根据kafka版本有2个分支,分别是spark-streaming-kafka-0-8和spark-str ...
 - Flink+Kafka整合的实例
		
Flink+Kafka整合实例 1.使用工具Intellig IDEA新建一个maven项目,为项目命名为kafka01. 2.我的pom.xml文件配置如下. <?xml version=&q ...
 - Spark Streaming和Kafka整合开发指南(二)
		
在本博客的<Spark Streaming和Kafka整合开发指南(一)>文章中介绍了如何使用基于Receiver的方法使用Spark Streaming从Kafka中接收数据.本文将介绍 ...
 - Spark Streaming和Kafka整合开发指南(一)
		
Apache Kafka是一个分布式的消息发布-订阅系统.可以说,任何实时大数据处理工具缺少与Kafka整合都是不完整的.本文将介绍如何使用Spark Streaming从Kafka中接收数据,这里将 ...
 - [Maven]Eclipse插件之Maven配置及问题解析.
		
前言:今天在自己环境装了Maven环境, 并且安装了Eclipse插件, 在查找插件过程中确实遇到一些问题, 好不容易找到一个 却又有问题.装好了插件之后, 用Eclipse创建Maven项目却出现 ...
 
随机推荐
- Day12作业及默写
			
1.整理今天的博客,写课上代码,整理流程图. 2.用列表推导式做下列小题 li=['alex','wusir','abds','meet','ab'] a. 过滤掉长度小于3的字符串列表,并将剩下的转 ...
 - 用Java批量重命名文件
			
要事先在C盘里创建“照片”和“照片1”两个文件夹 1import java.io.*; public class Jack { public static void main(String[] arg ...
 - python day06 作业答案
			
1. count=1 while count<11: fen=input('请第{}个评委打分' .format( count)) if int(fen) >5 and int(fen) ...
 - LeetCode—66、88、118、119、121 Array(Easy)
			
66. Plus One Given a non-negative integer represented as a non-empty array of digits, plus one to th ...
 - 莫烦tensorflow(1)-训练线性函数模型
			
import tensorflow as tfimport numpy as np #create datax_data = np.random.rand(100).astype(np.float32 ...
 - SpringBatch  Sample (五)(复合格式文件的读、多文件的写)
			
前面关于Spring Batch的文章,讲述了SpringBatch对CSV文件的读写操作.对XML文件的操作,以及对固定长格式文件的操作.这些事例,同一个Reader读取的都是相同格式的数据,最终写 ...
 - C#类中字段封装为属性
			
本文描述内容转载 https://zhidao.baidu.com/question/1174413218458798139.html 感谢 冥冥有你PD 的解答!!! 问题思索1 类成员包括变量和方 ...
 - ORA-00600: internal error code, arguments: [kcblasm_1], [103], [] bug
			
巡检发现存在alert 日志存在ORA-600 1.0 查询alter 对应的Trace日志 /oracle/admin/fgsquery/udump/fgsquery_ora_21777.trc O ...
 - 求强连通分量Tarjan算法
			
]; // 时间戳 ; // 时间 ]; // 节点u所能访问到的最小时间戳 ]; // 节点u是否在栈中. ]; ; // 我们维护的信息. ]; // 给节点染色, 同一个连通块的节点应该是同一个 ...
 - 关于Adaboost——样本抽样的权值的实际意义
			
看这篇文章的前提:已经看了PRML中的Adaboost的算法流程 看懂下面的内容必须牢牢记住:Adaboost使用的误差函数是指数误差 文章主要目的:理解样本抽样的权值是为什么那样变化的. 得出的结论 ...