✨博客主页: https://blog.csdn.net/m0_63815035?type=blog
💗《博客内容》:大数据、Java、测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识
📢博客专栏: https://blog.csdn.net/m0_63815035/category_11954877.html
📢欢迎点赞 👍 收藏 ⭐留言 📝
📢本文为学习笔记资料,如有侵权,请联系我删除,疏漏之处还请指正🙉
📢大厦之成,非一木之材也;大海之阔,非一流之归也✨
前言&课程重点
大家好,我是程序员小羊!接下来一周,咱们将用 “实战拆解 + 技术落地” 的方式,带大家吃透一个完整的大数据电商项目 ——不管你是想靠项目经验敲开大厂就业门,还是要做毕业设计、提升技术深度,这门课都能帮你 “从懂概念到能落地”。
毕竟大数据领域不缺 “会背理论” 的人,缺的是 “能把项目跑通、能跟业务结合” 的实战型选手。咱们这一周的内容,不搞虚的,全程围绕 “电商业务痛点→数据解决方案→技术栈落地” 展开,每天聚焦 1 个核心模块,最后还能输出可放进简历的项目成果。
进入正题:
本项目是一门实战导向的大数据课程,专为具备Java基础但对大数据生态系统不熟悉的同学量身打造。你将从零开始,逐步掌握大数据的基本概念、架构原理以及在电商流量分析中的实际应用,迅速融入当下热门的离线数据处理技术。
在这门课程中,你将学会如何搭建和优化Hadoop高可用环境,了解HDFS存储、YARN资源调度的核心原理,为数据处理打下坚实的基础。同时,你将掌握Hive数据仓库的构建和数仓建模方法,了解如何将海量原始数据经过层次化处理,转化为高质量的数据资产。
课程还将引领你深入Spark SQL的世界,通过实际案例学习如何利用Spark高效计算PV、UV以及各类衍生指标,提升数据分析效率。此外,你还将学习Flume的安装与配置,实现Web日志的实时采集和ETL入仓,确保数据传输的稳定与高效。
为了贴近企业实际运作,本项目还包括定时任务的设置和自动化数据管道构建,教你如何编写Shell脚本并利用crontab定时调度Spark作业,让数据处理过程实现自动化与智能化。最后,通过可视化展示模块,你将学会用FineBI等工具将数据分析结果直观呈现
总之,这是一门集大数据基础、系统搭建、数据处理与智能分析于一体的全链路实战课程。无论你是初入大数据领域的新手,还是希望提升数据处理能力的开发者,都将在这里收获满满,掌握最前沿的大数据技术。
课程计划:
天数 | 主题 | 主要内容 |
---|---|---|
Day 1 | 大数据基础+项目分组 (ZK补充) | 大数据概念、数仓建模、组件介绍、分组;简单介绍项目。 |
Day 2 | Hadoop初认识+ HA环境搭建 | 初认识Hadoop,了解HDFS 基本操作,YARN 资源调度,数据存储测试等,并且完成Hadoop高可用的环境搭建。 |
Day 3 | Hive 数据仓库 | Hive SQL 基础、表设计、加载数据,搭建Hive环境并融入Hadoop实现高可用 |
Day 4 | Spark SQL 基础 | 讲解Spark基础,DataFrame & SQL 查询,Hive 集成和环境的搭建 |
Day 5 | Flume 数据采集及ETL入仓 | 安装Flume高可用,学习基础的Flume知识并且使用Flume 采集 Web 日志,存入 HDFS;数据格式解析,数据传输优化 |
Day 6 | 数据入仓 & 指标计算 | 解析 PV、UV 计算逻辑,Hive 数据清洗、分层存储(ODS → DWD) |
Day 7 | Spark 计算 & 指标优化 | 使用 Spark SQL 计算 PV、UV 及衍生指标(如跳出率、人均访问时长等) |
Day 8 | 定时任务 & 数据管道 | 编写 Shell 脚本,使用 crontab 实现定时任务,调度 Spark SQL |
Day 9 | 可视化 & 数据分析 | 搭建一个简单的项目使用 FineBI 进行数据展示,分析趋势。 |
Day 10 | 项目答辩 | 小组演示分析结果,可以后台联系程序员小羊点评 |
今日学习重点:
本章节旨在指导同学们搭建大数据学习的开发环境。我们将详细介绍如何在虚拟机中配置Linux系统,并安装大数据生态系统中的核心软件,如JDK、Hadoop、Spark、Hive和Zookeeper等。通过本章的实践操作,同学们不仅能熟悉各组件的安装步骤和依赖关系,还能掌握虚拟机配置的基本技巧,为后续的大数据项目打下坚实基础。无论你是大数据初学者还是有一定开发经验的学员,本章都将提供一份详细、易操作的安装指导,帮助你快速适应和掌握大数据开发平台的要求,顺利迈入大数据世界。
大数据学习必备前置软件
本章节旨在指导同学们搭建大数据学习的开发环境。我们将详细介绍如何在虚拟机中配置Linux系统,并安装大数据生态系统中的核心软件,如JDK、Hadoop、Spark、Hive和Zookeeper等。通过本章的实践操作,同学们不仅能熟悉各组件的安装步骤和依赖关系,还能掌握虚拟机配置的基本技巧,为后续的大数据项目打下坚实基础。无论你是大数据初学者还是有一定开发经验的学员,本章都将提供一份详细、易操作的安装指导,帮助你快速适应和掌握大数据开发平台的要求,顺利迈入大数据世界。
大数据学习必备前置软件[具体步骤可以参考下面连接]
详细安装教程以下步骤可以省略…直接看这个链接
在Windows环境中学习大数据,建议准备的软件主要包括以下几个方面:
DataGrip 文件名:datagrip-2014.1.3.exe https://cloud.189.cn/web/share?code=NzuA3aiiYNFf(访问码:fad9)
安装和激活
安装DataGrip 连接数据库,无论是业务数据库还是大数据数据库的都可以无缝连接。安装过程没有什么难度,就是点开exe程序然后点击下一步,选一个合适的安装位置然后直到进度条走完即可。
Java开发工具包(JDK) 文件名:OpenJDK8U-jdk_x64_windows_hotspot_8u442b06.zip
https://cloud.189.cn/web/share?code=NzuA3aiiYNFf(访问码:fad9)安装Java JDK
因为当前大数据顶级项目都是基于JAVA开发的,并且由于兼容性,通常对外的兼容都是动一发而牵动全身,所以在大数据的学习中,所有的软件环境和代码都是要依赖Java8的,本地电脑上必须有,其他版本只要不是JAVA8一律不能用。
你只需要解压软件并且配置环境变量即可。在电脑合适的位置下解压并且保证上级没有二层嵌套目录,路径下没有中文和中文字符!
文件管理器复制文件的根目录位置,复制准备配置环境变量(win+E 打开文件管理器,右边找到此电脑邮件选择属性,高级系统属性,环境变量)
在系统变脸中添加创建JAVA_HOME
值为 java解压路径 ,在 path 中添加设置环境变量为%JAVA_HOME%\bin
完成后保存关闭之前打开的所有窗口返回桌面。
win+R 输入cmd 回车,在终端窗口输入java -version 返回版本号而不是 未知的命令 安装完成。
安装IDEA (社区版) 推荐版本:2023.1.7 文件名:ideaIC-2023.1.7.exe https://cloud.189.cn/web/share?code=NzuA3aiiYNFf(访问码:fad9)
安装IDEA
下载完成后一直点下一步,更改存储位置即可,不懂可以按照默认选项安装直到完成。如果不会参考这个文章 https://blog.csdn.net/2501_90193588/article/details/145068748
安装 Xterminal 文件名:XTerminal-2.11.2-win-x64-installer.exe https://cloud.189.cn/web/share?code=NzuA3aiiYNFf(访问码:fad9)
安装Xterminal
这是为了能够通过SSH远程连接虚拟机准备的软件,同时还可以完成文件编写,文件下载管理和多窗口管理。
直接安装,下载完成后一直点下一步,更改存储位置即可,不懂可以按照默认选项安装直到完成。添加虚拟机之前需要创建一个仓库密码
设置完仓库密码后按照下面的方式就可以创建并远程连接一个虚拟机了。
安装 Vmware 虚拟机软件 文件名:VMware-workstation-full-16.1.0-17198959.exe
https://cloud.189.cn/web/share?code=NzuA3aiiYNFf(访问码:fad9)安装Vmware
你的虚拟机都要基于Vmware虚拟化安装,这是基础软件。基本没有技巧就改一下位置然后一直点下一步即可。
推荐安装 内存自动清理软件 文件名:WMOSetup_4.2.2.128.exe https://cloud.189.cn/web/share?code=NzuA3aiiYNFf(访问码:fad9)
安装虚拟机
首先,你需要安装Vmware,并且为了避免麻烦,你可以如下一样将自己的Nat8网卡的IP和地址位全部更改成和我一样的,这样可以减少很多不必要的麻烦。
较老的Vmware版本修改网络:
安装虚拟机
在安装和配置虚拟机的时候,需要跟大家预先沟通IP和文件的安装位置。
IP:node01( 192.168.100.101 ) 、node02( 192.168.100.102 )、node03( 192.168.100.103 )
Linux用户:root 密码:123456
软件安装包的位置:/opt/yjx HDFS组名:hdfs://hdfs-yjx/
软件安装的位置:/opt/yjx
软件安装的所属用户:root
首先先安装Node01,按照视频操作或者按照下面的图片进行操作。
【一分钟扫盲课——安装Linux虚拟机】 https://www.bilibili.com/video/BV1Ah4y1Q7Ng/?share_source=copy_web&vd_source=de6b2b4f89ff741a48a72f53616cdf1e
centos7 镜像下载:文件名:CentOS-7-x86_64-Minimal-2009.iso 地址:https://cloud.189.cn/web/share?code=NzuA3aiiYNFf(访问码:fad9)
配置虚拟机网络
安装完成后我们需要配置下面的东西:
- 网络配置:vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
DEVICE=ens33
#必须为yes
ONBOOT=yes
# 配置IP 子网掩码 网关 和 DNS
IPADDR=192.168.100.101
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=192.168.100.2
DNS2=114.114.114.114
DNS3=8.8.8.8
按
Esc
退出 输入:wq
回车,在命令行输入systemctl restart network
重启网络。输入
ping www.baidu.com
测试网络连通性
关闭防火墙和SELINUX
为了后面的学习方便关闭防火墙可以避免网络端口配置和管理问题。
systemctl stop firewalld
停止防火墙 、systemctl disable firewalld
永久警用防火墙
相对的,如果你有需要可以把 stop 换成 start 就是启动;把disable换成resatrt就可以启用防火墙,status 查看防火墙状态。
systemctl status firewalld
如果你的显示是如下,那就是错误的,你的防火墙没有关闭。
关闭 SELINUX 。使用以下命令打开 SELinux 的配置文件:vi /etc/selinux/config
修改 SELinux=disabled ,然后 :wq 保存并退出。
更换yum下载源:
请先确保自己安装了 wget ,如未安装请先运行 yum -y install wget 命令进行安装。
优秀的程序员修改东西一定要养成备份的习惯,备份以后就可以大胆的进行尝试了。首先备份系统自带 yum 源配置
文件 /etc/yum.repos.d/CentOS-Base.repo
。
然后根据对应的 CentOS 版本,运行以下命令下载阿里 yum 源或者网易 yum 源至 yum 源配置文件存放目录。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 阿里 yum 源
# CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 网易 yum 源
# CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
bash <(curl -sSL [https://linuxmirrors.cn/main.sh)](https://linuxmirrors.cn/main.sh))
参考操作:1 y y y y
配置网络映射和免密登录:
- 设置hosts文件[主机映射],
vim /etc/hosts
在最后面添加例如下面的东西 [ IP地址 主机名列表 ]
192.168.100.101 node01 h1 master
192.168.100.102 node02 h2 slave1
192.168.100.103 node03 h3 slave2
设置免密登录:ssh-keygen -t rsa 生成密钥,一直点回车知道结束,ssh-copy-id localhost, 输入密码就可以了[秘钥的保存位置 cd ~/.ssh/]
vi /etc/ssh/ssh_config
在host 严格级别设置为 no
Windows配置hosts 文件地址 :
C:\Windows\System32\drivers\etc\hosts
关闭虚拟机,立刻拍摄一个快照,这个快照就是配置完Linux基础配置的模板机。
安装Java -JDK8(Linux)
不同的软件有不同的版本,针对于不同的操作者系统,编程软件也有不同的型号分别,因为我们的大数据组件都是支持JDK8 的jvm 所以这边建议安装这个版本的JDk在Linux上。
文件名:jdk-8u351-linux-x64.rpm https://cloud.189.cn/web/share?code=NzuA3aiiYNFf(访问码:fad9)
在虚拟机上创建一个名为opt/yjx的目录,将jdk-8u351-linux-x64.rpm上传到此位置然后安装即可。使用rpm安装会自动配置java的环境变量,不需要我们配置。
[root@node01 ~]# mkdir -p /opt/yjx
[root@node01 ~]# cd /opt/yjx/
[root@node01 ~]# [上传文件]
[root@node01 ~]# rpm -ivh jdk-8u351-linux-x64.rpm
# 查看安装是否成功
[root@node01 ~]# rpm -qa | grep jdk
# 查看环境变量
[root@node01 ~]# java -version
安装Zookeeper
- 克隆node01,成为node02,node03,你需要额外配置网络不唯一,系统名字也不唯一,参考下表
节点名 | IP地址 |
---|---|
node01 | 192.168.100.101 |
node02 | 192.168.100.102 |
node03 | 192.168.100.103 |
克隆完成后发现两台机器名字也叫node01 这肯定是不对的,
vi /etc/hostname
:修改完成后需要重启生效。修改网络 只需要将IP改为102,103(node02,node03)即可。
免密登录:在node01、node02、node03 分别执行
ssh-keygen -t rsa
生成密钥 后输入ssh-copy-id node01
ssh-copy-id node02
ssh-copy-id node03
(每一台都要重复此操作)上传Zookeeper安装包 文件名:apache-zookeeper-3.6.3-bin.tar.gz https://cloud.189.cn/web/share?code=NzuA3aiiYNFf(访问码:fad9)
时间同步
yum install vim screen ntp -y
准备常用工具包;(时间同步见Day1-1)ntpdate -su api.bz
上传并解压并且删除安装包
[root@node01 ~]# tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C /opt/yjx/
[root@node01 ~]# rm apache-zookeeper-3.6.3-bin.tar.gz -rf
- 创建目录并且编辑 zoo.cfg
[root@node01 ~]# mkdir -p /var/yjx/zookeeper/data
[root@node01 ~]# mkdir -p /opt/yjx/apache-zookeeper-3.6.3-bin/logs
[root@node01 ~]# cd /opt/yjx/apache-zookeeper-3.6.3-bin/
[root@node01 apache-zookeeper-3.6.3-bin]# cp conf/zoo_sample.cfg conf/zoo.cfg
[root@node01 apache-zookeeper-3.6.3-bin]# vim conf/zoo.cfg
# 修改以下内容 (旁边的数字是行号)
12 dataDir=/var/yjx/zookeeper/data
13 dataLogDir=/opt/yjx/apache-zookeeper-3.6.3-bin/logs
15 clientPort=2181
37 server.1=node01:2888:3888
38 server.2=node02:2888:3888
39 server.3=node03:2888:3888
- 接下来将 node01 的 ZooKeeper 所有文件拷贝至 node02 和 node03。推荐从 node02 和 node03 拷贝。
[root@node01 ~]# scp -r /opt/yjx/apache-zookeeper-3.6.3-bin/ node02:$PWD
[root@node01 ~]# scp -r /opt/yjx/apache-zookeeper-3.6.3-bin/ node03:$PWD
- 在三台节点 /var/yjx/zookeeper/data 目录下分别创建 myid 文件,内容分别为 1,2,3。
node01
[root@node01 ~]# echo 1 > /var/yjx/zookeeper/data/myid
node02
[root@node02 ~]# mkdir -p /var/yjx/zookeeper/data
[root@node02 ~]# echo 2 > /var/yjx/zookeeper/data/myid
node03
[root@node03 ~]# mkdir -p /var/yjx/zookeeper/data
[root@node03 ~]# echo 3 > /var/yjx/zookeeper/data/myid
#!注意 确定每一个myid只有一行并且没有多余空格
- 最后
vim /etc/profile
配置环境变量,环境搭建结束。配完环境变量后source /etc/profile
重新加载环境变量。
[root@node01 ~]# vim /etc/profile
export ZOOKEEPER_HOME=/opt/yjx/apache-zookeeper-3.6.3-bin
export PATH=$ZOOKEEPER_HOME/bin:$PATH
[root@node01 ~]# source /etc/profile
- 启动 三个节点都运行
zkServer.sh start
,但是这样太麻烦了,写一个脚本直接批量在三个机器都运行最好,看脚本。
[root@node01 ~]# zkServer.sh start
[root@node02 ~]# zkServer.sh start
[root@node03 ~]# zkServer.sh start
# 在 /usr/local/bin 目录下创建对应服务的脚本:
[root@node01 ~]# cd ~
[root@node01 ~]# vim zookeeper
..............................................................
#!/bin/bash
user=$(whoami)
case $1 in
"start")
for i in node01 node02 node03
do
echo -e "\e[1;34m==================== $i ZooKeeper 启动 ====================\e[0m"
sleep 3
ssh $user@$i "/opt/yjx/apache-zookeeper-3.6.3-bin/bin/zkServer.sh start"
done
;;
"stop")
for i in node01 node02 node03
do
echo -e "\e[1;34m==================== $i ZooKeeper 停止 ====================\e[0m"
ssh $user@$i "/opt/yjx/apache-zookeeper-3.6.3-bin/bin/zkServer.sh stop"
done
;;
"status")
for i in node01 node01 node03
do
echo -e "\e[1;34m==================== $i ZooKeeper 状态 ====================\e[0m"
ssh $user@$i "/opt/yjx/apache-zookeeper-3.6.3-bin/bin/zkServer.sh status"
done
;;
"restart")
for i in node01 node02 node03
do
echo -e "\e[1;34m==================== $i ZooKeeper 重启 ====================\e[0m"
ssh $user@$i "/opt/yjx/apache-zookeeper-3.6.3-bin/bin/zkServer.sh restart"
done
;;
esac
..............................................................
[root@node01 ~]# chmod 750 zookeeper
(此操作三个虚拟机都要运行)关闭zookpeer:zkServer.sh stop
查看状态zookpeer:zkServer.sh status
脚本在node01 运行即可:./zookeeper start|stop|status
CAP原则
CAP定理是分布式计算领域中一个重要的理论,它阐述了在分布式系统中一致性C、可用性A 和分区容忍性P三个特性之间的关系。
CAP原则的内容:一致性 所有节点在同一时间看到的数据应该是一致的。这意味着在任何时候,任何客户端都应该能够读取到最新的数据值。可用性 系统需要保证每个请求都能收到响应,不发生故障。分区容忍性 即当系统的一部分组件或节点失效时,整个系统仍然能够继续运行
通常情况下通常需要在以下三个属性之间进行权衡,不能三者兼得只能平衡其二,P保证必须有分区容忍性的时候只能选择A保证用户可用性优先,C保证数据安全优先。选择CP还是AP取决于系统对于数据一致性和服务可用性的需求。
什么是?Zookpeer?
ZooKeeper 是一个开源的分布式协调服务,主要用于解决分布式系统中的一致性、配置管理、命名、同步以及 leader 选举等问题。
1. ZooKeeper 的作用
分布式协调:在分布式环境中,各个节点之间需要协调工作,ZooKeeper 提供了一致性的存储(类似一个小型的分布式文件系统),各节点可以在上面存取状态信息。
配置管理:通过 ZooKeeper,可以集中管理分布式系统的配置信息,当配置更新时,所有的客户端可以实时感知变化。
命名服务:它可以作为一个分布式的注册中心,帮助分布式系统中各个节点注册和发现服务。
分布式锁与同步:利用 ZooKeeper 的节点顺序和 Watcher 机制,可以实现分布式锁和其他同步机制。
Leader 选举:ZooKeeper 经常用于选举分布式系统中的主节点(Master),保证在集群中只有一个“主”在执行关键任务。
2. ZooKeeper 如何选其他举主节点
在 ZooKeeper 的领导选举中,每个候选节点都会在一个预定的目录下创建一个临时顺序节点(ephemeral sequential node)。ZooKeeper 为这些节点自动分配一个递增的序号。
所有节点创建的顺序节点会按序号排序,序号最小的节点被认为是 Leader。这种机制类似于一个公平锁,每个节点都有一个先后顺序,最前面的节点获得锁,也就是成为 Leader,创建一个临时的节点文件。也就有点像是排队先来先赢的意思。
当 Leader 节点掉线或失去连接时,它创建的临时节点会被自动删除,其他候选节点会检测到这一变化,并重新根据最小序号来选举出新的 Leader。可以说,ZooKeeper 选主机制本质上利用了临时顺序节点来模拟一个公平锁的效果,依靠节点创建顺序和临时节点失效来实现 Leader 的自动切换。
3. Zookpeer怎么自己选主?
首先Zookpeer自身有比较复杂的事务id的属性,每个节点当参与了一次活动自身id为+1,当所有人都参加了活动公共id+1,主节点默认直接+1。现在比如说我有一个主节点,在分布式架构中,通常主节点才负责对数据的修改和删除等操作,其他节点都是听主节点广播再决定要不要更改自身状态的小弟。
现在老大死啦,那么事务到100,主节点记录是到102,那么A节点101那么大概率是A节点,因为他的事务最大,那么也不完全对,那么如果b说我也是102,那么票优先给最小的,自己先给自己来一票达到二分一自动为主节点。
4. ZK是是什么架构?他怎么保证的数据一致性?
首先ZK肯定是一个天生分布式的架构,他是强CP的架构,保证数据一致性,但是这样会降低自己的效率,怎么解决?
在ZK中有三个角色,领导者Leader,跟随者Follower,学习者 Observe ,领导者负责查询和对数据的修改,添加这样的事务操作。其他节点只负责查询,当他收到类似修改的事务操作会转发给Leader完成,完成后会把数据改动按照通知的方式一个一个告诉Follower。
当Follower一半以上都修改好数据那么变成广播,其他节点立刻通知修改,这个速度很快,修改完给自己的节点事务+1。
但是如果集群规模很大剩下的都是Follower我要是想要达到一半那也太慢了,有没有什么办法?再加一个Observe 变成Follower的小弟,如果Follower改了会自动帮忙带话给Observe 修改了,广播形式。
结尾:
本课程是一门以电商流量数据分析为核心的大数据实战课程,旨在帮助你全面掌握大数据技术栈的核心组件及其在实际项目中的应用。从零开始,你将深入了解并实践Hadoop、Hive、Spark和Flume等主流技术,为企业级电商流量项目构建一个高可用、稳定高效的数据处理系统。
在课程中,你将学习如何搭建并优化Hadoop高可用环境,熟悉HDFS分布式存储和YARN资源调度机制,为大规模数据存储与计算奠定坚实基础。随后,通过Hive数据仓库的构建与数仓建模,你将掌握如何将原始日志数据进行分层处理,实现数据清洗与结构化存储,从而为后续数据分析做好准备。
借助Spark SQL的强大功能,你将通过实战案例学会快速计算和分析关键指标,如页面浏览量(PV)、独立访客数(UV),以及通过数据比较获得的环比、等比等衍生指标。这些指标将帮助企业准确洞察用户行为和流量趋势,为优化营销策略提供科学依据。
同时,本课程还包含Flume数据采集与ETL入仓的实战模块,教你如何采集实时Web日志数据,并利用ETL流程将数据自动导入HDFS和Hive,确保数据传输和处理的高效稳定。
总体来说,这门课程面向希望提升大数据应用能力的技术人员和企业项目团队,紧密围绕公司电商流量项目的实际需求展开。通过系统的理论讲解与动手实践,你不仅能够构建从数据采集、存储、处理到可视化展示的完整数据管道,还能利用PV、UV、环比、等比等关键指标,全面掌握电商流量数据分析的核心技能。
今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文