• 一、Spark 大数据分析框架

    • 1.1 数据结构
    • 1.2 SQL语句简介
  • 二、搜狗实验室(用户查询日志)数据分析
    • 2.1获取数据集并初步分析:
    • 2.2 创建数据库/表——导入数据分析
  • 三、电影评分分析
    • 3.1 数据集 样本分析
    • 3.2 在Hive中使用CTAS方式创建临时结果表–方便后续分析
    • 3.3 使用Python脚本处理Hive表中数据
    • 3.4 时间戳处理-python unixtime_to_weekday.py

一、Spark 大数据分析框架

1.1 数据结构
1. 功能:   类似MapReduce并行计算框架,对海量数据分析处理2. 数据结构:-a. 最原始数据结构,最核心RDD(弹性分布式数据集):类比Python中列表处理数据调用函数Transformation(高阶函数)SparkContext: sc (实例对象名称) -b. 最新数据结构DataFrame = RDD + Schema(字段类型和字段名称)SparkSession: sparkspark.read / result_df.write.cvs(.tsv).json.jdbc.hdfs.....
1.2 SQL语句简介

无论是Hadoop框架还是Spark框架数据分析,通常都是通过SQL语句分析,类似于MySQL数据库SQL语句,95%类似

SQL 语言:
提供从RDBMS中检索数据(查询数据、分析数据)
语法:SELECT ... FROM ... WHERE ... GROUP BY ... ORDER BY ...

SQL on HADOOP:对海量数据进行分析(底层MR/Spark)

Hive 框架:
出现最早的SQL on Hadoop框架,将大数据分析使用SQL完成编码
Facebook 为了方便DBA对基于HADOOP大数据平台对海量数据分析,开发提供SQL接口的大数据框架Hive。
Hive + Python集成分析数据
-1. Python 脚本 文件用于预处理数据
-2. Hive提供SQL来分析数据

Hive 框架 类似MySQL数据库分析数据SQL语法非常类似
提供[erognda]虚拟机中已经在linux系统中安装mysql数据库和hive框架。

二、搜狗实验室(用户查询日志)数据分析

2.1获取数据集并初步分析:

搜狗实验室:http://www.sogou.com/labs/
用户查询日志(SogouQ): http://www.sogou.com/labs/resource/q.php

数据格式:
访问时间 \t 用户ID \t [查询词] \t 该URL在返回结果中的排名space用户点击的顺序号 \t 用户点击的URL 1. 样本数据00:00:00    2982199073774412    [360安全卫士]   8 3 \download.it.com.cn/softweb/software/firewall/antivirus/20067/17938.html
2. 对应字段名称access_timeuser_idsearch_wordsort_id$click_idurl
3. Hive表中每条数据 对应  数据文件中 一行数据,各个字段之间的分隔符隔开(制表符)
如何使用Hive分析数据:-a. 创建数据库(如果不存在的话)-b. 创建表 指定表的字段名称和字段类型,字段值的分隔符-c. 加载数据到表中将日志文件数据 映射 到表 -d. 业务编写SQL分析数据HiveQL(类似MySQL中SQL)Spark SQL读取Hive表中的数据-1. 前世今生Hive   ->  Shark    ->  SparkSQL将SQL转换MR-2. SparkSQL一开始就是为了处理Hive表中的数据,提供SQLSparkSQL与Hive天然无缝集成-3. 不仅仅使用SQL分析,又提供类似Pandas数据分析理念DataFrame(VM虚拟机环境全部配置完成)SparkSQL读取Hive表中的数据分析,简单的配置-1. 将Hive配置文件hive-site.xml放入Spark安装目录下$ cp ${HIVE_HOME}/conf/hive-site.xml ${SPARK_HOME}/conf/-2. 将MySQL驱动包放入Spark框架jar包目录mysql-connector-java-5.1.27-bin.jar
2.2 创建数据库/表——导入数据分析
#启动 pyspark 框架中的主从机(打开终端执行以下命令:)
/opt/modules/hadoop-2.7.3/sbin/hadoop-daemon.sh start namenode
/opt/modules/hadoop-2.7.3/sbin/hadoop-daemon.sh start datanode
jps
输出:
3191 jps
3111 DataNode
3021 NameNode
-- 创建并使用数据库
CREATE DATABASE IF NOT EXISTS db_hive ;
USE db_hive ;-- 创建表
CREATE TABLE IF NOT EXISTS db_hive.sg_log(
access_time string,
user_id string,
search_word string,
sortId_clickId string,
url string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';  --分隔符:制表符-- 加载数据文件 到 表中
LOAD DATA LOCAL INPATH '/home/rdedu/SogouQ.sample' INTO TABLE db_hive.sg_log ;
LOAD DATA LOCAL INPATH '/home/rdedu/SogouQ.reduced' INTO TABLE db_hive.sg_log ;-- 设置HiveQL转换MapReduce运行在LocalMode中
set hive.exec.mode.local.auto=true;-- 查看条目数、样本数据、删除表
select count(1) from sg_log ;
select * from sg_log limit 5 ;
DROP TABLE IF EXISTS db_hive.sg_log ;-- 设置HiveQL转换MapReduce运行在LocalMode中
set hive.exec.mode.local.auto=true;-- 对搜狗用户日志分析,一天的额数据,设置参数,以便运行在本地模式
set hive.exec.mode.local.auto.inputbytes.max = 160939050 ;-----------分析数据(依据业务)来分析-------------- 1. 统计每个用户的PV数,降序排列desc   pv: pageview 用户浏览网页个数
SELECT user_id, COUNT(1) AS pv FROM db_hive.sg_log GROUP BY user_id ORDER BY pv DESC LIMIT 10 ;-- 2.  统计每个小时的PV数
SELECT  t.hour_str, COUNT(1) AS pv
FROM (SELECT SUBSTRING(access_time,0 ,2) AS hour_str, url  FROM db_hive.sg_log) As t
GROUP BY t.hour_str ORDER BY pv DESC ;-- 3. 统计每个用户搜索关键词点击结果的次数-- 从某种程度上,检验搜索引擎底层技术
SELECT user_id, search_word, COUNT(1) AS cnt
FROMdb_hive.sg_log
GROUP BY user_id, search_word
ORDER BY cnt DESC
LIMIT 20 ;-- 4. 统计每个用户搜索关键词的的个数
SELECT user_id, COUNT(DISTINCT search_word) AS cnt FROM db_hive.sg_log GROUP BY user_id ORDER BY cnt DESC LIMIT 10 ;

三、电影评分分析

3.1 数据集 样本分析
用户信息表-样本数据:1|24|M|technician|85711user id | age | gender | occupation | zip code 电影评分表-样本数据: 196 242 3   881250949user id | item id | rating | timestamp
-- 创建数据库、用户信息表
CREATE DATABASE IF NOT EXISTS db_movie ;
CREATE TABLE IF NOT EXISTS db_movie.ml_user(
user_id string,
age string,
gender string,
occupation string,
zipcode string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|';-- 创建电影评分表
CREATE TABLE IF NOT EXISTS db_movie.ml_rating(
user_id string,
item_id string,
rating string,
unixtime string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';-- 加载数据到 用户信息表/电影评分表
LOAD DATA LOCAL INPATH '/home/rdedu/ml-100k/u.user' INTO TABLE db_movie.ml_user ;
LOAD DATA LOCAL INPATH '/home/rdedu/ml-100k/u.data' INTO TABLE db_movie.ml_rating ;-- 统计表中的条目数
SELECT COUNT(1) AS FROM db_movie.ml_rating ;
SELECT COUNT(1) AS FROM db_movie.ml_user ;-- 每部电影的评分人数及平均分
SELECT  item_id, COUNT(item_id) AS num, ROUND(AVG(rating), 2) AS avg_rating
FROM db_movie.ml_rating
GROUP BY item_id
ORDER BY num DESC, avg_rating DESC
LIMIT 10 ;-- 每个用户评分的次数和工作
SELECT t1.user_id, t1.cnt, t2.occupation
FROM(SELECT user_id, COUNT(1) AS cnt FROM db_movie.ml_rating GROUP BY user_id ORDER BY cnt DESC
) As t1
JOIN db_movie.ml_user t2
ONt1.user_id = t2.user_id ;
3.2 在Hive中使用CTAS方式创建临时结果表–方便后续分析
示例: CTAS:Create Table As Select
CREATE TABLE IF NOT EXISTS db_movie.user_cnt_occu
AS
SELECT t1.user_id, t1.cnt, t2.occupation
FROM(SELECT user_id, COUNT(1) AS cnt FROM db_movie.ml_rating GROUP BY user_id ORDER BY cnt DESC
) As t1
JOIN db_movie.ml_user t2
ONt1.user_id = t2.user_id ;  -- 统计 评分的用户中各个职业的人数
SELECT occupation, SUM(cnt) AS total
FROM db_movie.user_cnt_occu
GROUP BY occupation
ORDER BY total DESC limit 21 ;-- 先统计有多少个职业
SELECT COUNT(DISTINCT occupation) AS cnt FROM db_movie.user_cnt_occu ;
3.3 使用Python脚本处理Hive表中数据
如何使用Python脚本处理Hive表中数据python脚本处理表的每条数据
遵循原则: -a. 输入数据  TRANSFORM表中的字段-b. 处理数据  USING指定python脚本处理数据-c. 输出数据   AS输出字段
CREATE TABLE IF NOT EXISTS db_movie.ml_rating_new(
user_id string,
item_id string,
rating string,
weekday string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';-- 加载脚本文件到集群开发环境 中
add file /home/rdedu/ml-100k/unixtime_to_weekday.py ;-- 从原数据表中读取数据,加载到 业务数据表
INSERT OVERWRITE TABLE db_movie.ml_rating_new
SELECT TRANSFORM (user_id, item_id, rating, unixtime)USING 'python unixtime_to_weekday.py'AS (user_id, item_id, rating, weekday)
FROM db_movie.ml_rating ;--  统计一周中 每天观看电影的人数
SELECT weekday, COUNT(1) AS total FROM db_movie.ml_rating_new GROUP BY weekday ORDER BY total DESC ; 
3.4 时间戳处理-python unixtime_to_weekday.py
#!/usr/local/bin/python
# -*- coding: utf-8 -*-import sys
import datetime
"""将878887116 时间戳转换为星期几#样本数据(913 209 2   881367150)
"""
for line in sys.stdin:line = line.strip()user_id, item_id, rating, unixtime = line.split("\t")# 调用函数将时间戳为星期几weekday = datetime.datetime.fromtimestamp(float(unixtime)).isoweekday()# 标准输出print '\t'.join([user_id, item_id, rating, str(weekday)])

大数据Hive集成python分析框架—搜狗实验室(用户查询日志)—电影评分分析相关推荐

  1. 大数据Hive学习案例(1)——基于搜狗sogou_500w的日志数据分析

    下方有数据可免费下载 目录 数据预处理 查看数据 数据扩展 数据加载 构建数据仓库 创建外部表 创建分区表 数据分析需求 条数统计 关键词分析 UID分析 用户行为分析 点击次数与rank之间的关系分 ...

  2. 基因大数据的集成分析

    基因大数据的集成分析 胡湘红1, 彭衡2, 杨灿3, 张纵辉1, 万翔1, 罗智泉1 1 深圳市大数据研究院,广东 深圳 518172 2 香港浸会大学数学系,香港 999077 3 香港科技大学数学 ...

  3. 大数据如何使用Python分析微信数据

    截至2020年第二季度,微信拥有超过27亿活跃用户.这意味着,如果你正在阅读大数据如何使用Python分析微信数据,那么你很可能是微信用户.但是,你到底有多少微信用户?你实际发布了多少?我们可以使用P ...

  4. 大数据,why python

    大数据,why python ps, 2015-12-4 20:47:46 http://www.open-open.com/news/view/fbffc4 <机器学习编程语言之争,Pytho ...

  5. 大数据开发要学Java框架吗?

    大数据开发要学Java框架吗?学习大数据要去学习Java而且还要精通,不仅要掌握Java基础知识还要掌握一些核心的Java架构.从java基础开始,学习大数据开发过程中必备的离线数据分析.实时数据分析 ...

  6. 图解大数据 | Hive搭建与应用@实操案例

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/84 本文地址:http://www.showmeai.tech/article-det ...

  7. 2021年大数据Hive(一):​​​​​​​Hive基本概念

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 历史文章 前言 Hive基本概念 一.Hive介绍 1.什么是Hive 2.为什么使 ...

  8. 大数据 python和java_大数据入门选择Python还是Java?

    原标题:大数据入门选择Python还是Java? java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两 ...

  9. 大数据OLAP技术体系学习框架

    文章目录 大数据OLAP技术体系学习框架 前言 一.Apache Druid分布式数据存储 二.ClickHouse列式数据库 三.Presto分布式查询引擎 四.Kudu分布式存储库 五.Kylin ...

最新文章

  1. docker宿主机访问docker容器服务失败
  2. memcached php 测试,php一致性hash性能测试(flexihash/memcache/memcached)
  3. 多表查询,初识pymysql模块
  4. matebook14支持触摸屏吗_matebook 14有触屏吗
  5. Java Web应用程序开发-深入体验Java Web开发内幕之初步
  6. 游戏毕业设计参考文献合集
  7. 内网渗透中wmic的使用
  8. 嗅探器c语言源码,C语言嗅探器
  9. 精进1-如何反思 by采铜
  10. 关于人工智能的思考--以copilot、openAI为例
  11. MODBUS RTU 协议读卡器
  12. 解决npm 编译时报node_modules/optipng-bin/vendor/optipng ENOENT
  13. pk+uk+fk+index
  14. 用python 对蜻蜓fm下载的音频文件进行批量还原文件名
  15. Elasticsearch 分片管理解析
  16. 按照标签号某行读出所有数据,并且按照签号作为文件名重新写入文件。文件格式等同源文件。
  17. 基于Echarts数据可视化地图模块(地图下钻+地图迁徙线)
  18. vue中使用qrcode生成二维码并实现打印功能
  19. php查拼音,PHP-Pinyin
  20. 按头安利!好看又实用的中国风 古风高清背景图片素材看这里!

热门文章

  1. 树的概念:层次、高度、深度、宽度
  2. 二阶无源低通滤波器的截止频率与RC关系
  3. [国家集训队2012]tree(陈立杰)
  4. 安装配置Maven构建工具
  5. 国内哪家的香港云服务器哪家好?
  6. 8139网卡刷MAC
  7. 基于Tushare一键生成股票基本面数据
  8. 小程序上传视频的php接口处理,微信小程序[第十二篇] -- 上传视频
  9. 客户端Git安装教程
  10. 感恩节营销策划方案PPT模板