生活中的大数据之通话记录分析 (1)
一、项目背景
现如今,智能手机是人手一份。每天我们都通过手机与外界沟通交流,手机作为必不可少的媒介,无形中记录着我们日常生活中的点点滴滴。这些信息主要包括个人位置信息、通信信息、账号密码信息、存储文件信息等四大类。
因此,通过对手机数据的挖掘与分析,可以便捷地进行用户行为分析;比如,利用手机数据可以进行用户特征挖掘;利用通话记录可以进行社交亲密度分析等等。我带着这个想法,导出自己手机上可以找到的各种数据文件,并通过HIVE对这些数据进行了简单的统计分析
二、项目实现
项目架构图
2、项目步骤
1、使用put语句将通话数据、电话号码txt数据导入到HDFS中保存;
2、使用HQL语言对HDFS中的通话数据及电话号码进行清洗(需求分析的一部分),清洗要求去除错误字段,补充不完整字段,并根据Hive分析需求取出所涉及字段按照一定格式保存到HDFS中。清洗之后要求保留如下字段:日期、电话号码、城市、通话时间、手机卡类型、呼叫类型(呼入/呼出)、身份 3、初步了解数据后,使用HDFS中的通话数据及电话号码进行统计分析。具体统计分析内容见“项目需求”。
4、将分析出的数据在HDFS中存储一份,作为历史数据进行备份。
三、项目数据
本项目需要出来的数据包括从手机导出的通话数据及官网导出的电话号码数据以及本地MySQL数据库中的电话号码表、通话记录表。
1、电话号码数据与通话记录数据(本数据为虚拟机存储目录)
/home/zhangyu/call_records.txt
导入/home/1
/home/zhangyu/number_fields.txt
导入/home/2
/home/zhangyu/sf
导入/home/home3/
/home/zhangyu/xb
导入/home/home4/
2、电话号码表
id | 序号 |
number_bigint | 号段 |
area | 区号 |
city | 城市 |
card_type | 手机卡类型 |
3、通话记录表
phone_data | 通话日期 |
phone_number | 电话号码 |
call_duration | 通话时间 |
type | 呼叫类型 |
4.身份表
phone_number | 电话号码 |
sf | 身份 |
5.性别表
phone_number | 电话号码 |
xb | 性别 |
四、代码实现
C++代码:
身份
#include<stdlib.h>
#include<iostream>
#include<string>
#include <fstream>
using namespace std;
int main(int argc, char** argv) {
ofstream outfile;
ifstream file;
long long xx[4000];
string st[10]={"快餐","KTV","酒店","银行保险","快递","医院","家人","公司同事","朋友","老师"};
int j,i=0;
file.open("a.txt");
outfile.open("abc.txt");
while(!file.eof())
{
file>>xx[i];
j=xx[i]%10;
outfile<<st[j]<<endl;
cout<<xx[i]<<endl;
i++;
}
file.close();
outfile.close();
return 0;
}
性别
#include<stdlib.h>
#include<iostream>
#include<string>
#include <fstream>
using namespace std;
int main(int argc, char** argv) {
ofstream outfile;
ifstream file;
long long xx[4000];
string st[2]={"男","女"};
int j,i=0;
file.open("a.txt");
outfile.open("abc.txt");
while(!file.eof())
{
file>>xx[i];
j=xx[i]%2;
outfile<<st[j]<<endl;
cout<<xx[i]<<endl;
i++;
}
file.close();
outfile.close();
return 0;
}
数据代码:
hadoop fs -mkdir -p /home/home1/
/home/home2/
DROP DATABASE IF EXISTS liwen_test CASCADE;
create database liwen_test;
show databases;
use liwen_test;
CREATE EXTERNAL TABLE sf(
phone_number STRING,
sf STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE LOCATION '/home/home3/';
CREATE EXTERNAL TABLE xb(
phone_number STRING,
xb STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE LOCATION '/home/home4/';
CREATE EXTERNAL TABLE number_field(id INT,
number_bigint STRING,
area STRING,
city STRING,
card_type STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE LOCATION '/home/home2/';
CREATE EXTERNAL TABLE call_records(
phone_data STRING,
phone_number STRING,
call_duration INT,
type STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE LOCATION '/home/home1/';
- 点赞
- 收藏
- 关注作者
评论(0)