活动推荐系统项目(数据准备阶段将数据导入hive)

数据下载

链接: 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:不会参加的用户

所以,总的来说包括三类数据:

  • 用户信息
  • 用户社交信息
  • 活动本身信息

技术框架

image-20210203153330622

使用Flume将数据写到Kafka

首先将数据上传到linux系统

image-20210203154618675

然后到一个目录下面编写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所需要的三个文件夹

image-20210203155322811

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

image-20210203155812572

5.将之前上传的event_attendees.csv文件复制到/dataSourceFile的eventattend文件夹下面,并改名为eventattends_2021-01-06.csv

image-20210203160748443

当文件末尾出现.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>
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值