大数据实战 --- 美团外卖平台数据分析

这篇具有很好参考价值的文章主要介绍了大数据实战 --- 美团外卖平台数据分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

开发环境 

数据描述

功能需求

数据准备

数据分析

RDD操作

Spark SQL操作

创建Hbase数据表

创建外部表

统计查询


开发环境 

Hadoop+Hive+Spark+HBase

启动Hadoop:start-all.sh

启动zookeeper:zkServer.sh start

启动Hive

nohup hiveserver2 1>/dev/null 2>&1 &

beeline -u jdbc:hive2://192.168.152.192:10000

启动Hbase

start-hbase.sh

hbase shell

启动Spark

spark-shell

数据描述

meituan_waimai_meishi.csv 是美团外卖平台的部分外卖 SPU(Standard Product Unit , 标准产品单元)数据,包含了外卖平台某地区一时间的外卖信息。具体字段说明如下:
 

大数据实战 --- 美团外卖平台数据分析

功能需求

数据准备

请在 HDFS 中创建目录 /app/data/exam ,并将 meituan_waimai_meishi.csv 文件传到该
目录。并通过 HDFS 命令查询出文档有多少行数据。

创建文件
hdfs dfs -mkdir -p /app/data/exam

上传目录
hdfs dfs -put ./meituan_waimai_meishi.csv /app/data/exam

查看文件行数
hdfs dfs -cat /app/data/exam/meituan_waimai_meishi.csv | wc -l

数据分析

使用 Spark, 加载 HDFS 文件系统 meituan_waimai_meishi.csv 文件,并分别使用 RDD
Spark SQL 完成以下分析(不用考虑数据去重)

RDD操作

    val spark: SparkSession = SparkSession.builder()
      .master("local[*]")
      .appName("exam")
      .getOrCreate()
    val sc: SparkContext = spark.sparkContext
    val lines: RDD[String] = sc.textFile("hdfs://192.168.152.192:9000/app/data/exam/meituan_waimai_meishi.csv")


    val lines1: RDD[Array[String]] = lines.filter(x => x.startsWith("spu_id") == false)
      .map(x => x.split(","))
①统计每个店铺分别有多少商品(SPU)。
lines1.map(x => (x(2), 1)).reduceByKey(_ + _).collect().foreach(println)

②统计每个店铺的总销售额。

lines1.map(x => (x(2), Try(x(5).toDouble).toOption.getOrElse(0.0) *
  Try(x(7).toInt).toOption.getOrElse(0))).reduceByKey(_ + _)
  .collect().foreach(println)

③统计每个店铺销售额最高的前三个商品,输出内容包括店铺名,商品名和销售额,其

中销售额为 0 的商品不进行统计计算,例如:如果某个店铺销售为 0,则不进行统计。
    //方法一
    lines1.map(x => (x(2), x(4), Try(x(5).toDouble).toOption.getOrElse(0.0) *
      Try(x(7).toInt).toOption.getOrElse(0)))
      .filter(x => x._3 > 0).groupBy(x => x._1)
      .mapValues(value => value.toList.sortBy(x => -x._3).take(3)) //负号(-)降序
      .flatMapValues(x => x)
      .collect().foreach(println)
    //方法二
    lines1.map(x => (x(2), x(4), Try(x(5).toDouble).toOption.getOrElse(0.0) *
      Try(x(7).toInt).toOption.getOrElse(0)))
      .filter(x => x._3 > 0).groupBy(x => x._1)
      .flatMap(x => x._2.toList.sortBy(y => 0 - y._3).take(3))
      .foreach(println)

    //方法三
    lines1.map(x => (x(2), x(4), Try(x(5).toDouble).toOption.getOrElse(0.0) *
      Try(x(7).toInt).toOption.getOrElse(0)))
      .filter(x => x._3 > 0).groupBy(x => x._1)
      .map(x => {
        var shop_name: String = x._1;
        var topThree: List[(String, String, Double)] = x._2.toList.sortBy(item => 0 - item._3).take(3);
        var shopNameAndSumMoney: List[String] = topThree.map(it => it._2 + " " + it._3);
        (shop_name, shopNameAndSumMoney)
      })
      .foreach(println)

Spark SQL操作

    val spark: SparkSession = SparkSession.builder()
      .master("local[*]")
      .appName("exam")
      .getOrCreate()
    val sc: SparkContext = spark.sparkContext
    val spuDF: DataFrame = spark.read.format("csv").option("header", true).load("hdfs://192.168.152.192:9000/app/data/exam/meituan_waimai_meishi.csv")
    
    spuDF.createOrReplaceTempView("sputb")

①统计每个店铺分别有多少商品(SPU)。

spark.sql("select * from sputb").show()

②统计每个店铺的总销售额。

spark.sql("select shop_name,count(shop_name) as num  from sputb group by shop_name").show()

③统计每个店铺销售额最高的前三个商品,输出内容包括店铺名,商品名和销售额,其 中销售额为 0 的商品不进行统计计算,例如:如果某个店铺销售为 0,则不进行统计。

spark.sql("select shop_name, sum(spu_price * month_sales)  as sumMoney  from sputb group by shop_name").show()

创建Hbase数据表

在 HBase 中创建命名空间(namespaceexam,在该命名空间下创建 spu 表,该表下有

1 个列族 result。
create 'exam:spu','result'

创建外部表

请 在 Hive 中 创 建 数 据 库 spu_db 

大数据实战 --- 美团外卖平台数据分析

大数据实战 --- 美团外卖平台数据分析

create database spu_db;

  在 该 数 据 库 中 创 建 外 部 表 ex_spu 指 向 /app/data/exam 下的测试数据 ;

create external table if not exists  ex_spu (
    spu_id string,
    shop_id string,
    shop_name string,
    category_name string,
    spu_name string,
    spu_price double,
    spu_originprice double,
    month_sales int,
    praise_num int,
    spu_unit string,
    spu_desc string,
    spu_image string
)
row format delimited fields terminated by ","
stored as textfile location "/app/data/exam"
tblproperties ("skip.header.line.count"="1");

创建外部表 ex_spu_hbase 映射至 HBase 中的 exam:spu 表的 result 列族文章来源地址https://www.toymoban.com/news/detail-434210.html

create external table if not exists ex_spu_hbase
(
    key string,
    sales double,
    praise int
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' with
serdeproperties ("hbase.columns.mapping"=":key,result:sales,result:praise")
tblproperties ("hbase.table.name"="exam:spu");

统计查询

① 统计每个店铺的总销售额 sales, 店铺的商品总点赞数 praise ,并将 shop_id
shop_name 的组合作为 RowKey ,并将结果映射到 HBase
insert into ex_spu_hbase
select concat(tb.shop_id,tb.shop_name) as key, tb.sales,tb.praise from
(select shop_id,shop_name,sum(spu_price*month_sales) as sales, sum(praise_num) as praise
from ex_spu group by shop_id,shop_name) tb;
② 完成统计后,分别在 hive HBase 中查询结果数据。
hive > select * from ex_spu_hbase;

hbase(main):007:0> scan 'exam:spu'

到了这里,关于大数据实战 --- 美团外卖平台数据分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据实战(hadoop+spark+python):淘宝电商数据分析

    虚拟机:Ubuntu 20.04.6 LTS docker容器 hadoop-3.3.4 spark-3.3.2-bin-hadoop3 python,pyspark, pandas,matplotlib mysql,mysql-connector-j-8.0.32.jar(下载不需要积分什么的) 淘宝用户数据 以上的技术积累需要自行完成 创建容器(##ubuntu的代码块,在ubuntu中运行,无特殊说明的在docker中运行) 更新软件

    2024年02月11日
    浏览(46)
  • 大数据项目实战——基于某招聘网站进行数据采集及数据分析(三)

    第三章 数据采集 掌握 HDFS API 的基本使用 熟悉 HttpClent 爬虫的使用方法 本篇主要对要采集的数据结构进行分析以及创建编写数据采集程序的环境,为最终编写数据采集程序做准备。 在爬取网站数据前要先通过分析网站的源码结构制定爬虫程序的编写方式,以便能获取准确的

    2024年02月11日
    浏览(26)
  • 大数据项目实战——基于某招聘网站进行数据采集及数据分析(二)

    第二章 搭建大数据集群环境 了解虚拟机的安装和克隆 熟悉虚拟机网络配置和 SSH 服务配置 掌握 Hadoop 集群的搭建 熟悉 Hive 的安装 掌握 Sqoop 的安装 搭建大数据集群环境是开发本项目的基础。本篇将通过在虚拟机中构建多个Linux操作系统的方式来搭建大数据集群环境。 Hadoop本

    2024年02月11日
    浏览(32)
  • 大数据项目实战——基于某招聘网站进行数据采集及数据分析(一)

    掌握项目需求和目标 了解项目架构设计和技术选型 了解项目环境和相关开发工具 理解项目开发流程 在人力资源管理领域,网络招聘近年来早已凭借其范围广、信息量大、时效性强、流程简单而效果显著等优势,成为企业招聘的核心方式。随着大数据渐渐融入人类社会生活的

    2024年02月02日
    浏览(36)
  • Spark 大数据实战:基于 RDD 的大数据处理分析

    之前笔者参加了公司内部举办的一个 Big Data Workshop,接触了一些 Spark 的皮毛,后来在工作中陆陆续续又学习了一些 Spark 的实战知识。 本文笔者从小白的视角出发,给大家普及 Spark 的应用知识。 Spark 集群是基于 Apache Spark 的分布式计算环境,用于处理 大规模数据集 的计算任

    2024年01月25日
    浏览(27)
  • 【产品分析】如何利用咖喱外卖店铺数据进行营销分析Python

    在外卖平台上经营咖喱店铺时,海量的订单数据和用户评价等信息将成为商家优化营销策略的重要依据。然而,面对大量的数据,如果没有合适的分析方法,这些数据就变得毫无意义。本文将介绍如何使用Python中常用的可视化工具和方法,对咖喱店铺数据进行分析和可视化展

    2024年02月02日
    浏览(44)
  • 【大数据实训】基于赶集网租房信息的数据分析与可视化(七)

    温馨提示:文末有 CSDN 平台官方提供的博主 的联系方式,有偿帮忙部署 一、实验环境 (1)Linux: Ubuntu 16.04 (2)Python: 3.6 (3)Hadoop:3.1.3(4)Spark: 2.4.0(5)Web框架:flask 1.0.3 (6)可视化工具:Echarts (7)开发工具:Visual Studio Code 二、小组成员及分工 (1)成员:林xx,x

    2024年02月03日
    浏览(45)
  • 【大数据实训】基于当当网图书信息的数据分析与可视化(八)

    温馨提示:文末有 CSDN 平台官方提供的博主 的联系方式,有偿帮忙部署 一、实验环境 (1)Linux: Ubuntu 16.04 (2)Python: 3.5 (3)Hadoop:3.1.3(4)Spark: 2.4.0(5)Web框架:flask 1.0.3 (6)可视化工具:Echarts (7)开发工具:Visual Studio Code 二、小组成员及分工 (1)成员:林海滢,

    2024年02月04日
    浏览(32)
  • nodejs+vue+elementui+express外卖数据分析python

    在上述需求分析的基础上,通过深入研究,将系统使用人员划分为信息采集编辑、信息维护编辑、信息发布编辑三个角色。 本论文的研究目的是为了给采编者提供一套完善、高效的智能信息收集解决方案,并利用一系列的程序设计与开发,为采编者提供一个具备稳定、鲁棒

    2024年02月08日
    浏览(18)
  • 【大数据实训】基于Hadoop的2019年11月至2020年2月宁波天气数据分析(五)

    博主介绍 : ✌ 全网粉丝6W+,csdn特邀作者、博客专家、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于大数据技术领域和毕业项目实战 ✌ 🍅 文末获取项目联系 🍅 2019—2020 学年第二学期《分布式系统原理与技术》期末大作业评分表 评价内容

    2024年02月06日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包