数据下载
链接: https://pan.baidu.com/s/1JfJ5EK55-XQbgGODIpEWSw 提取码: gmkr 复制这段内容后打开百度网盘手机App,操作更方便哦
介绍
根据用户信息与活动(event)信息,预测用户将对哪些活动感兴趣。
数据集介绍
共有六个文件:train.csv,test.csv, users.csv,user_friends.csv,events.csv和 event_attendees.csv。
train.csv 包含六列:
user:用户id
event:活动id
invite:是否被邀请
timestamp:时间戳
interested:
not_interested
test.csv包含四列(与train的属性相同,但没有interested和not_interested)。
users.csv 包含七列
user_id:用户的ID
locale:用户区域
birthyear:用户出生的年份
gender:性别
joinedAt:首次使用APP的时间
location:用户位置
timezone:UTC偏移量
user_friends.csv包含有关此用户的社交数据,包含两列:user和friends。
user:用户的id,
friends:用户朋友ID(以空格分隔)。
events.csv 包含有关活动的数据,有110列。前九列是 event_id,user_id,start_time,city,state,zip,country, lat和lng
event_id:活动id
user_id:创建活动的用户的id
start_time:开始时间
city、state、zip、country:活动场地详细信息
lat和lng:经纬度
count_1, count_2,…, count_100 表示:统计了活动名称或描述中出现的100个最常见的词干,统计它们出现的频率(会把时态语态都去掉, 对词做了词频的排序(表示前N个最常出现的词,每个词在活动中出现的频次。)
count_other: count_other 是其余词的统计。
event_attendees.csv包含有关哪些用户参加了各种事件的信息,并包含以下列: event_id,yes,maybe,invite和no。
event_id:活动id
yes:会参加的用户
maybe:可能参加的用户
invite:邀请的用户
no:不会参加的用户
所以,总的来说包括三类数据:
- 用户信息
- 用户社交信息
- 活动本身信息
技术框架
使用Flume将数据写到Kafka
首先将数据上传到linux系统
然后到一个目录下面编写flume所需的conf
这里以event_attendees为例子
1.创建flume配置文件eventattend-flume-kafka.conf
eventattend.sources=eventattendSource
eventattend.channels=eventattendChannel
eventattend.sinks=eventattendSink
eventattend.sources.eventattendSource.type=spooldir
eventattend.sources.eventattendSource.spoolDir=/opt/flume/conf/jobkb09/dataSourceFile/eventattend
eventattend.sources.eventattendSource.includePattern=eventattends_[0-9]{
4}-[0-9]{
2}-[0-9]{
2}.csv
eventattend.sources.eventattendSource.deserializer=LINE
eventattend.sources.eventattendSource.deserializer.maxLineLength=320000
eventattend.sources.eventattendSource.interceptors=head_filter
eventattend.sources.eventattendSource.interceptors.head_filter.type=regex_filter
eventattend.sources.eventattendSource.interceptors.head_filter.regex=^event*
eventattend.sources.eventattendSource.interceptors.head_filter.excludeEvents=true
eventattend.channels.eventattendChannel.type=file
eventattend.channels.eventattendChannel.checkpointDir=/opt/flume/conf/jobkb09/checkPointFile/eventattend
eventattend.channels.eventattendChannel.dataDirs=opt/flume/conf/jobkb09/dataChannelFile/eventattend
eventattend.sinks.eventattendSink.type=org.apache.flume.sink.kafka.KafkaSink
eventattend.sinks.eventattendSink.batchSize=640
eventattend.sinks.eventattendSink.brokerList=192.168.83.100:9092
eventattend.sinks.eventattendSink.topic=event_attendees_raw
eventattend.sources.eventattendSource.channels=eventattendChannel
eventattend.sinks.eventattendSink.channel=eventattendChannel
2.创建flume所需要的三个文件夹
3.启动kafka,在Kafka创建event_attendees_raw话题
kafka-topics.sh --zookeeper hadoop100:2181 --create --topic users --partitions 1 --replication-factor 1
kafka-topics.sh --zookeeper hadoop100:2181 --create --topic user_friends_raw --partitions 1 --replication-factor 1
kafka-topics.sh --zookeeper hadoop100:2181 --create --topic user_friends --partitions 1 --replication-factor 1
kafka-topics.sh --zookeeper hadoop100:2181 --create --topic events --partitions 1 --replication-factor 1
kafka-topics.sh --zookeeper hadoop100:2181 --create --topic event_attendees_raw --partitions 1 --replication-factor 1
kafka-topics.sh --zookeeper hadoop100:2181 --create --topic event_attendees --partitions 1 --replication-factor 1
kafka-topics.sh --zookeeper hadoop100:2181 --create --topic train --partitions 1 --replication-factor 1
4.启动flume
[root@hadoop100 flume]# ./bin/flume-ng agent -n eventattend -c ./conf/ -f ./conf/jobkb09/eventattend-flume-kafka.conf -Dflume.root.logger=INFO,console
5.将之前上传的event_attendees.csv文件复制到/dataSourceFile的eventattend文件夹下面,并改名为eventattends_2021-01-06.csv
当文件末尾出现.completed,说明文件已经成功写入到kafka
其余4个文件重复1-5步的操作。
链接: https://pan.baidu.com/s/1UNv9DaG43u6-15y5BqcbsQ 提取码: gdpk 复制这段内容后打开百度网盘手机App,操作更方便哦
消费Kafka数据进入Hbase
首先在Hbase当中创建表
create_namespace 'events_db'
create 'events_db:users','profile','region','registration'
create 'events_db:user_friend','uf'
create 'events_db:events','schedule','location','creator','remark'
create 'events_db:event_attendee','euat'
create 'events_db:event_train','eu'
加载idea依赖
<?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>cn.kgc</groupId>
<artifactId>streamstu</artifactId>
<version>1.0-SNAPSHOT</version>
<name>streamstu</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<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>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka_2.12</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>