spark streaming与Kafka结合

原创 2018年04月17日 01:02:18

1.代码

import org.apache.kafka.common.serialization.StringDeserializer
import org.apache.spark.SparkConf
import org.apache.spark.streaming.kafka010.KafkaUtils
import org.apache.spark.streaming.{Seconds, StreamingContext}
import org.apache.spark.streaming.kafka010.LocationStrategies.PreferConsistent
import org.apache.spark.streaming.kafka010.ConsumerStrategies.Subscribe

/**
  * @author xxx_xx
  * @date 2018/4/17
  */
object KaflaWordCount {
  def main(args: Array[String]): Unit = {
  //在yarn上运行
    val conf = new SparkConf().setAppName("kafka_wordcount").setMaster("yarn");
    val ssc = new StreamingContext(conf, Seconds(5));
    val kafkaParams = Map[String, Object](
      "bootstrap.servers" -> "centos-1:9092",
      "key.deserializer" -> classOf[StringDeserializer],
      "value.deserializer" -> classOf[StringDeserializer],
      "group.id" -> "test",
      "auto.offset.reset" -> "latest",
      "enable.auto.commit" -> (false: java.lang.Boolean)
    )

    val topics = Array("data-syn")
    val stream = KafkaUtils.createDirectStream[String, String](
      ssc,
      PreferConsistent,
      Subscribe[String, String](topics, kafkaParams)
    )

    stream.map(record => (record.key, record.value)).print()
    ssc.start();
    ssc.awaitTermination();
  }
}

2.pom.xml这里为了避免服务器上类找不到,直接把依赖打上,不推荐

<?xml version="1.0" encoding="UTF-8"?>
<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>com.tech.data</groupId>
    <artifactId>spark-test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <spark.version>2.3.0</spark.version>
        <scala.version>2.11</scala.version>
    </properties>


    <dependencies>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming_${scala.version}</artifactId>
            <version>2.3.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
            <version>2.3.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.scala-tools</groupId>
                <artifactId>maven-scala-plugin</artifactId>
                <version>2.15.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19</version>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>


            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <!-- 此处指定main方法入口的class -->
                            <mainClass>KaflaWordCount</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>assembly</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

3.提交命令

spark-submit --master yarn --class KaflaWordCount spark-test-1.0-SNAPSHOT.jar

4.测试输入

bin/kafka-console-producer.sh --broker-list centos-3:9092 --topic data-syn
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_22222499/article/details/79968952

ASP、JSP与PHP的比较

 ASP、JSP与PHP的比较目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(Java Server Pages),PHP (Hypertext Prepro...
  • golive
  • golive
  • 2001-02-15 14:13:00
  • 1934

Spark&redis

转:http://www.jianshu.com/p/e91076ccc194 Spark的优势在于内存计算,然而在计算中难免会用到一些元数据或中间数据,有的存在关系型数据库中,有的存在HDFS...
  • weixin_36630761
  • weixin_36630761
  • 2017-10-19 20:28:31
  • 72

redis的类型、原理及使用场景

转自:http://blog.csdn.net/hguisu/article/details/8836819 1.  MySQL+Memcached架构的问题 Me...
  • jinfeiteng2008
  • jinfeiteng2008
  • 2016-12-17 20:00:22
  • 5968

spark入门详解

1. Spark中的基本概念 在Spark中,有下面的基本概念。 Application:基于Spark的用户程序,包含了一个driver program和集群中多个executor Dri...
  • anningzhu
  • anningzhu
  • 2017-03-07 20:24:36
  • 3741

flume-kafka- spark streaming(pyspark) - redis 实时日志收集实时计算

鉴于实在是比较少python相关是spark streaming的例子,对于自己实现的测试例子分享上来一起讨论。强烈建议scala去写spark streaming程序,python资料太少,翻遍gi...
  • zhong_han_jun
  • zhong_han_jun
  • 2016-02-23 11:20:09
  • 7862

spark与codis、kafka 整合

整理一下这几天的劳动成果,方便自己日后使用,可能存在目前没有发现的问题,若有博友发现有问题的请指明~谢谢 EngineIntime_Start.scala 类,接收kafka消息 ...
  • qq_18838991
  • qq_18838991
  • 2016-09-08 10:10:38
  • 673

分析Redis架构设计

http://blog.csdn.net/a600423444/article/details/8944601一、前言因为近期项目中开始使用Redis,为了更好的理解Redis并应用在适合的业务场景,...
  • bluejoe2000
  • bluejoe2000
  • 2015-03-24 14:44:53
  • 1344

Redis在京东到家的订单中的使用

背景 Redis作为一款性能优异的内存数据库,在互联网公司有着多种应用场景,下面介绍下Redis在京东到家的订单列表中的使用场景。主要从以下几个方面来介绍: 订单列表在Redis中的存储结...
  • sdgihshdv
  • sdgihshdv
  • 2017-10-20 22:15:59
  • 524

WIN32 环境时钟编程要诀

WIN32 环境时钟编程要诀 ● 樊一鹏(FreeMind) RETURN  在游戏编程中,获得精确的时间控制是非常必要的一个工作。  在悠远的 DOS 时代,所有的程序员都习惯于靠接管和修改时间中断...
  • jiangtao
  • jiangtao
  • 2000-12-08 13:27:00
  • 2267

Spark Streaming结合 Kafka 两种不同的数据接收方式比较

揭开Spark Streaming神秘面纱⑥ - Spark Streaming结合 Kafka 两种不同的数据接收方式比较 字数956 阅读353 评论0 喜欢2 DirectKaf...
  • u011007180
  • u011007180
  • 2016-09-03 07:33:48
  • 4879
收藏助手
不良信息举报
您举报文章:spark streaming与Kafka结合
举报原因:
原因补充:

(最多只允许输入30个字)