生活中的大数据之通话记录分析 (1)

举报
星辰大海眺望远方 发表于 2019/02/02 18:19:28 2019/02/02
【摘要】 hive实现大数据挖掘

一、项目背景

现如今,智能手机是人手一份。每天我们都通过手机与外界沟通交流,手机作为必不可少的媒介,无形中记录着我们日常生活中的点点滴滴。这些信息主要包括个人位置信息、通信信息、账号密码信息、存储文件信息等四大类。

因此,通过对手机数据的挖掘与分析,可以便捷地进行用户行为分析;比如,利用手机数据可以进行用户特征挖掘;利用通话记录可以进行社交亲密度分析等等。我带着这个想法,导出自己手机上可以找到的各种数据文件,并通过HIVE对这些数据进行了简单的统计分析

二、项目实现

  1. 项目架构图

blob.png

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/';





【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。