Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/luckyzxl2016/spark-example

Spark1.6和spark2.2的示例,包含kafka,flume,structuredstreaming,jedis,elasticsearch,mysql,dataframe
https://github.com/luckyzxl2016/spark-example

dataframe elasticsearch jedis kafka mysql spark spark-example spark-sql spark-streaming spark-structured-streaming

Last synced: 20 days ago
JSON representation

Spark1.6和spark2.2的示例,包含kafka,flume,structuredstreaming,jedis,elasticsearch,mysql,dataframe

Awesome Lists containing this project

README

        

# Spark-Example
com.zxl.spark2_2.kafka

StreamingKafka8:

SparkStreaming从kafka中读取数据

kafka版本0.8

采取直连方式

StreamingKafka10:

SparkStreaming从kafka中读取数据

kafka版本0.10

采取直连方式

com.zxl.spark2_2.streaming

StreamingToMysql:

SparkStreaming读取数据,存储到Mysql中

com.zxl.spark2_2.structured

JDBCSink:

处理从StructuredStreaming中向mysql中写入数据

MySqlPool:

从mysql连接池中获取连接

StructuredStreamingKafka:

结构化流从kafka中读取数据存储到关系型数据库mysql

目前结构化流对kafka的要求版本0.10及以上

com.zxl.spark2_2.dataset

createDataSet:

DataSet创建的多种方式

basicAction:

DataSet的基本操作

actions:

DataSet的Action操作
1.map操作,flatMap操作
2.filter操作,where操作
3.去重操作
4.加法/减法操作
5.select操作
6.排序操作
7.分割抽样操作
8.列操作
9.join操作
10.分组聚合操作

com.zxl.spark1_6.dataframe

SQLDemo:

从hdfs中读取数据,转化为DataFrame,执行简单操作

com.zxl.spark1_6.elastic

ElasticSpark:

Elasticsearch是一个基于Lucene的实时地分布式搜索和分析引擎。

设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

com.zxl.spark1_6.flume

FlumePushWordCount:

flume向spark发送数据

添加三个jar包

- commons-lang3-3.3.2.jar

- scala-library-2.10.5.jar

- spark-streaming-flume-sink_2.10-1.6.1.jar

打成jar包上传到集群中运行

集群命令如下:

bin/spark-submit --master spark://node1:7077 --class com.zxl.spark1_6.flume.FlumePushWordCount /jar/____.jar 192.168.13.131 8888

com.zxl.spark1_6.jedis

JedisConnectionPool:

获得Jedis连接,进行简单操作

com.zxl.spark1_6.kafka

DirectKafkaWordCount:

Spark Streaming维护偏移量相关的信息,实现零数据丢失,保证不重复消费

采用直连的方式有一个缺点,就是不再向zookeeper中更新offset信息。

因此,在采用直连的方式消费kafka中的数据的时候,大体思路是首先获取保存在zookeeper中的偏移量信息,

根据偏移量信息去创建stream,消费数据后再把当前的偏移量写入zookeeper中

在2.0以前的版本中KafkaManager这个类是private权限,需要把它拷贝到项目里使用。
org.apache.spark.streaming.kafka

KafkaWordCount:

从集群中的kafka读取数据操作

运行时参数:

node1:2181,node2:2181,node3:2181 g1 test 2

其中g1为组名,此处随意写,test为topic名,kafka中的topic名要一致

集群命令(需先启动完成):

1.启动kafak

bin/kafka-server-start.sh config/server.properties > /dev/null 2>&1 &

2.创建topic

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic test

3.向topic中添加数据

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

com.zxl.spark1_6.my_partitioner

UrlCountPartition:

自定义分区

数据格式(时间点 url地址),例如:
20160321101954 http://net.zxl.cn/net/video.shtml

处理成数据(k, v)

对于数据(k, v)

重写自己的 partitioner

com.zxl.spark1_6.my_sort

CustomSort:自定义排序

com.zxl.spark1_6.mysql

JdbcRDDDemo:简单连接数据库操作

com.zxl.spark1_6.simple

AdvUrlCount:

读取文本内容,根据指定的学科, 取出点击量前三的

文本内容为某广告链接点击量,格式为:(时间点 某学科url链接)

举例:(20160321101957 http://net.zxl.cn/net/course.shtml)

IpDemo:

数据格式如下:
(1.0.1.0|1.0.3.255|16777472|16778239|亚洲|中国|福建|福州||电信|350100|China|CN|119.306239|26.075302)

根据ip地址转换为数字,从数据集中找出详细信息.

为了简化查找速率,采用二分查找.

UserLocation:

根据日志统计出每个用户在站点所呆时间最长的前2个的信息

日志内容格式为(手机号,时间点,基站站点,事件类型),事件类型为1时是进入基站,0是出基站。

1, 先根据"手机号_站点"为唯一标识, 算一次进站出站的时间, 返回(手机号_站点, 时间间隔)

2, 以"手机号_站点"为key, 统计每个站点的时间总和, ("手机号_站点", 时间总和)

3, ("手机号_站点", 时间总和) --> (手机号, 站点, 时间总和)

4, (手机号, 站点, 时间总和) --> groupBy().mapValues(以时间排序,取出前2个) --> (手机->((m,s,t)(m,s,t)))

WordCount:

简单WordCount实现

集群上执行示例,指定相关配置

bin/spark-submit --master spark://node1:7077 --class com.zxl.spark1_6.simple.WordCount --executor-memory 512m --total-executor-cores 2 /opt/soft/jar/hello-spark-1.0.jar hdfs://node1:9000/wc hdfs://node1:9000/out

com.zxl.spark1_6.streaming

LoggerLevels:

设置打印的log的级别

StateFulWordCount:

Spark Streaming累加器操作(updateStateByKey)

StreamingWordCount:

通过SparkStreaming简单实现WordCount

WindowOpts:

SparkStreaming窗口函数的实现

org.apache.spark.streaming.kafka

KafkaManager:

SparkStreaming直连kafka获取数据,自己编写偏移量offset,用于spark2.0以前