前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python过气,Hadoop凉了?零基础项目实战诠释何为经典

Python过气,Hadoop凉了?零基础项目实战诠释何为经典

作者头像
腾讯云开发者
发布于 2023-12-14 06:29:46
发布于 2023-12-14 06:29:46
66900
代码可运行
举报
运行总次数:0
代码可运行

👉导读

工欲善其事,必先利其器。Python 作为一种跨平台的编程语言,具有解释性、变异性、交互性和面向对象的特点,可应用于独立的项目开发。今天,我们特邀了公众号“冰河技术”作者、腾讯云 TVP 冰河老师,他将为我们带来基于 Python+Hadoop 手把手教学如何实现单词统计。

👉目录

1 Hadoop 原理与运行机制

2 搭建 Hadoop 单机环境

3 安装 Python3 运行环境

4 基于 Python+Hadoop 统计单词数量

5 总结

在过去的十数年间,Python 和 Hadoop 一直是大数据处理方向的黄金组合,而在近年来,号称将要取代 Python 的 Mojo 火了,唱衰 Hadoop 的言论也一直在持续。随着以 ChatGPT、腾讯混元为代表的大模型技术的横空出世,更是让这个领域迎来了新的挑战与转机。Python+Hadoop,这对黄金搭档在 2023 年的今天,还有值得学习的价值吗?今天我们通过一篇手把手实战的项目案例,诠释经典背后的技术魅力。

在当今的大数据环境下,数据无时无刻不在产生着,每天处理的数据量已经远远超出了单台计算机所能存储和计算的数据量。如何对这些数据进行存储和处理成为了大数据领域中的两大难题,而 Hadoop 的出现则有效解决了这一难题,其提供的两大核心技术:HDFS 分布式文件系统MapReduce 并行计算成功地为大数据的存储和计算提供了可靠保障。

本文将简单介绍 Hadoop 的基础知识、原理与运行机制,并且会从零开始搭建 Hadoop 本地模式,并基于 Python+Hadoop 实现单词统计功能。

01.Hadoop 原理与运行机制

众所周知,Hadoop 作为一个开源分布式系统基础框架,主要包含两大核心组件:HDFS 分布式文件系统和 MapReduce 分布式并行计算框架,这两大核心组件是 Hadoop 进行大数据处理的基础和基石,此外,Hadoop 的重要组件还包括:Hadoop Common 和 YARN 框架。目前,Hadoop 主要由 Apache 软件基金会进行开发和维护。

其实,我们在使用 Hadoop 的过程中,不需要了解分布式系统底层的细节,在开发 Hadoop 分布式程序的时候,只需要简单地编写 map() 函数和 reduce() 函数即可完成 Hadoop 程序的开发,并且能够充分利用 Hadoop 集群的大规模存储和高并行计算来完成复杂的大数据处理业务。

同时,Hadoop 分布式文件系统的高度容错性和高可扩展性等优点使得 Hadoop 可以部署在廉价的服务器集群上,它能够大大节约海量数据的存储成本。MapReduce 的高度容错性,有效保证了系统计算结果的准确性,并从整体上解决了大数据的可靠性存储和处理。

实际上,Hadoop 核心(或重要)组件主要包括:Hadoop Common、HDFS 分布式文件系统、MapReduce 分布式计算框架、YARN 资源调度框架,接下来,我们来简单了解 HDFS、MapReduce 和 YARN 的运行流程。

1.1 HDFS 分布式文件系统

首先,Hadoop 会将一个大文件切分成 N 个小文件数据块,分别存储到不同的 DataNode 上,具体如图1所示。

(图1)

当我们向 Hadoop 写入一个大文件时,客户端首先会向 NameNode 服务器获取元数据信息,得到元数据信息后向相应的 DataNode 写入文件,Hadoop 框架会比较文件的大小与数据块的大小,如果文件的大小小于数据块的大小,则文件不再切分,直接保存到相应的数据块中;如果文件的大小大于数据块的大小, Hadoop 框架则会将原来的大文件进行切分,形成若干数据块文件,并将这些数据块文件存储到相应的数据块中,同时,默认每个数据块保存3个副本存储到不同的 DataNode 中。

由于 Hadoop 中 NameNode 节点保存着整个数据集群的元数据信息,并负责整个集群的数据管理工作,所以,它在读/写数据上与其他传统分布式文件系统有些许不同之处。

Hadoop 读数据的简易流程如下图所示。

(图2)

  • 客户端发出读数据请求,请求 NameNode 节点的元数据。
  • NameNode 节点将元数据信息返回给客户端。
  • 客户端根据 NameNode 节点返回的元数据信息,到对应的 DataNode 节点上读取块数据,如果读取的文件比较大,则会被 Hadoop 切分成多个数据块,保存到不同的 DataNode 上。
  • 读取完3的数据块后,如果数据未读取完,则接着读取数据。
  • 读取完4的数据块后,如果数据未读取完,则接着读取数据。
  • 读完所有的数据之后,通知 NameNode 关闭数据流

Hadoop 写数据的简易流程如下图所示。

(图3)

  • 客户端向 NameNode 节点发起元数据请求,指定文件上传的路径,此时,NameNode 节点内部会进行一系列的操作,比如:验证客户端指定的路径是否合法,客户端是否具有写权限等。验证通过后,NameNode 节点会为文件分配块存储信息。
  • NameNode 节点向客户端返回元数据信息,并给客户端返回一个输出流。
  • 客户端获取到元数据和输出流之后,开始向第一个 DataNode 节点写数据块。
  • 第一个 DataNode 节点将数据块发送给第二个 DataNode 节点,第二个 DataNode 节点将数据块发送给第三个 DataNode 节点,以此类推,写完所有的数据块。
  • 每个 DataNode 节点会向上游的 DataNode 节点发送结果确认信息,以保证写入数据的完整性。
  • DataNode 节点向客户端发送结果确认信息,保证数据写入成功。
  • 当所有的数据块都写完,并且客户端接收到写入成功的确认信息后,客户端会向 NameNode 节点发送关闭数据流请求,NameNode 节点会将之前创建的输出流关闭。
1.2 MapReduce 分布式计算框架

值得一提的是,Hadoop 的 MapReduce 分布式计算框架会将一个大的、复杂的计算任务,分解为一个个小的简单的计算任务,这些分解后的计算任务会在 MapReduce 框架中并行执行,然后将计算的中间结果根据键进行排序、聚合等操作,最后输出最终的计算结果。

我们可以将这一整个 MapReduce 过程分为:数据输入阶段、map 阶段、中间结果处理阶段(包括 combiner 阶段和 shuffle 阶段)、reduce 阶段以及数据输出阶段。

数据输入阶段:将待处理的数据输入 MapReduce 系统。

map 阶段:map() 函数中的参数会以键值对的形式进行输入,经过 map() 函数的一系列并行处理后,将产生的中间结果输出到本地磁盘。

中间结果处理阶段:这个阶段又包含 combiner 阶段和 shuffle 阶段,对 map() 函数输出的中间结果按照键进行排序和聚合等一系列操作,并将键相同的数据输入相同的 reduce() 函数中进行处理(用户自身也可以根据实际情况指定数据的分发规则)。

reduce 阶段:reduce 函数的输入参数是以键和对应的值的集合形式输入的,经过 reduce 函数的处理后,产生一系列键值对形式的最终结果数据输出到 HDFS 分布式文件系统中。

数据输出阶段:数据从 MapReduce 系统中输出到 HDFS 分布式文件系统。

上述简要执行过程如图4所示。

(图4)

原始数据以“(k, 原始数据行data)”的形式输入到 map 阶段,经过 map 阶段的 map() 函数一系列并行处理后,将中间结果数据以“{(k1, v1), (k1, v2)}”的形式输出到本地,然后经过 MapReduce 框架的中间结果处理阶段的处理,此中间结果处理阶段会根据键对数据进行排序和聚合处理,将键相同的数据发送到同一个 reduce 函数处理。

接下来我们就进入到 reduce 阶段,reduce 阶段接收到的数据都是以“{k1,[v1, v2]…}”形式存在的数据,这些数据经过 reduce 阶段的处理之后,最终得出“{(k1,v3)}”样式的键值对结果数据,并将最终结果数据输出到 HDFS 分布式文件系统中。

1.3 YARN 资源调度系统

YARN 框架主要负责 Hadoop 的资源分配和调度工作,其工作流程可以简化为图5所示。

(图5)

  • 客户端向 ResourceManager 发出运行应用程序的请求。
  • ResourceManager 接收到客户端发出的运行应用程序的请求后,为应用程序分配资源。
  • ResourceManager 到 NodeManager 上启动 ApplicationMaster。
  • ApplicationMaster 向 ResourceManager 注册,使得 ResourceManager 能够时刻获得运行任务的进程状态信息;同时,ResourceManager 会为 ApplicationMaster 分配资源,并将分配资源的信息发送给 ApplicationMaster。
  • ApplicationMaster 获得分配的资源信息后,启动相应节点上的 Container,执行具体的 Task 任务。
  • Container 时刻与 ApplicationMaster 进行通信,向 ApplicationMaster 汇报任务执行的情况。
  • 当所有的任务运行完成之后,ApplicationMaster 向 ResourceManager 发出请求,注销自己。

02.搭建 Hadoop 单机环境

为了演示简单,这里我们搭建一套 Hadoop 单机环境为大家进行演示,并且默认大家已经安装好 CentOS7 操作系统并搭建好 JDK 环境。具体的环境信息如下所示。

  • 操作系统:CentOS7
  • 主机名:binghe102
  • IP 地址:192.168.184.102
  • JDK 版本:1.8
  • Hadoop 版本:Apache Hadoop 3.2.0

注意:此部分操作是以 Hadoop 用户登录 CentOS7 服务器进行的。

2.1 配置操作系统基础环境

我们主要是 Hadoop 用户来安装并启动 Hadoop,所以,我们需要先在服务器中添加 Hadoop 用户。

(1)添加 Hadoop 用户组和用户

首先,我们需要登录 root 账户,执行如下命令添加 Hadoop 用户组和用户。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
groupadd hadoop
useradd -r -g hadoop hadoop

(2)赋予 Hadoop 用户目录权限

为了方便安装 Hadoop 环境,我们需要将服务器的 /usr/local 目录权限赋予 Hadoop 用户,具体命令如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir -p /home/hadoop
chown -R hadoop.hadoop /usr/local/
chown -R hadoop.hadoop /tmp/
chown -R hadoop.hadoop /home/

(3)赋予 Hadoop 用户 sudo 权限

在这里,我们主要通过 vim 编辑器编辑 /etc/sudoers 文件来赋予 Hadoop 用户 sudo 权限,具体操作如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /etc/sudoers

然后找到如下代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root    ALL=(ALL)       ALL

接着,在此行代码后添加如下代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hadoop  ALL=(ALL)       ALL

注意:由于“/etc/sudoers”是只读文件,所以保存并退出“/etc/sudoers”文件使用的是“wq!”。

(4)赋予 Hadoop 用户密码

我们采用如下方式赋予 Hadoop 用户密码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@binghe102 ~]# clear
[root@binghe102 ~]# passwd hadoop
Changing password for user hadoop.
New password: 输入密码
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 再次输入密码
passwd: all authentication tokens updated successfully.

(5)关闭防火墙

并在命令行输入如下命令,关闭 CentOS7 防火墙。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl stop firewalld
systemctl disable firewalld

(6)配置 Hadoop 用户免密码登录

最后,以 Hadoop 用户登录服务器,分别输入如下命令来配置 Hadoop 用户免密码登录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ssh-keygen -t rsa
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
chmod 700 /home/hadoop/ 
chmod 700 /home/hadoop/.ssh 
chmod 644 /home/hadoop/.ssh/authorized_keys 
chmod 600 /home/hadoop/.ssh/id_rsa
ssh-copy-id -i /home/hadoop/.ssh/id_rsa.pub  主机名(IP地址)
2.2 搭建 Hadoop 本地模式

其实,Hadoop 本地安装模式是三种安装模式中最简单的一种,我们只需要在 Hadoop 的 hadoop-env.sh 文件中配置 JAVA_HOME 即可。

(1)下载 Hadoop 安装包

首先,我们需要在 CentOS7 命令行输入如下命令下载 Hadoop 安装包。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz

(2)解压 Hadoop 安装包

然后,在 CentOS7 命令行输入如下命令解压 Hadoop 安装包。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar -zxvf hadoop-3.2.0.tar.gz 

(3)配置 Hadoop 环境变量

接着,在 /etc/profile 文件中追加如下内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
HADOOP_HOME=/usr/local/hadoop-3.2.0
PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH HADOOP_HOME

然后输入如下命令使环境变量生效。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
source /etc/profile

(4)验证 Hadoop 的安装状态

在 CentOS7 命令行输入 hadoop version 命令验证 Hadoop 环境是否搭建成功,如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-bash-4.2$ hadoop version     
Hadoop 3.2.0
Source code repository https://github.com/apache/hadoop.git -r e97acb3bd8f3befd27418996fa5d4b50bf2e17bf
Compiled by sunilg on 2019-01-08T06:08Z
Compiled with protoc 2.5.0
From source with checksum d3f0795ed0d9dc378e2c785d3668f39
This command was run using /usr/local/hadoop-3.2.0/share/hadoop/common/hadoop-common-3.2.0.jar

可以看到,我们输出了 Hadoop 的版本号,说明 Hadoop 环境搭建成功。

(5)配置 Hadoop

这里,我们主要通过配置 Hadoop 安装目录下的 /etc/hadoop 目录下的 hadoop-env.sh 文件,例如我们将 Hadoop 安装在了 /usr/local/hadoop-3.2.0 目录下,所以,hadoop-env.sh 文件在 /usr/local/hadoop-3.2.0/etc/hadoop 目录下。

首先,使用 vim 编辑器打开 hadoop-env.sh 文件,如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vim /usr/local/hadoop-3.2.0/etc/hadoop/hadoop-env.sh

然后找到如下代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# export JAVA_HOME=

接着打开注释,我们将 JDK 的安装目录填写到等号后面。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export JAVA_HOME=/usr/local/jdk1.8.0_321

至此,Hadoop 搭建环境搭建完成。

03.安装 Python3 运行环境

CentOS7 操作系统中默认安装的 Python 版本是2.7.5,这里,我们将 Python 的版本升级为3.7.4。

注意:此部分操作是以 root 用户登录 CentOS7 服务器进行的。

3.1 查看原有的 Python 版本

我们直接在命令行输入 Python 即可查看当前的 Python 版本,如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@binghe102 ~]# python
Python 2.7.5 (default, Oct 14 2020, 14:45:30) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

可以看到,CentOS7 默认安装的 Python 版本为2.7.5。接下来,我们就将 Python 的版本升级为3.7.4。

3.2 安装 Python3 环境

(1)安装基础编译环境

首先,我们需要在服务器命令行输入如下命令安装基础编译环境。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel zlib* libffi-devel readline-devel tk-devel

(2)下载 Python 安装包

然后,我们在服务器命令行输入如下命令下载 Python 安装包。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz

(3)解压 Python 安装包

接着,输入如下命令解压 Python 安装包。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tar -zxvf Python-3.7.4.tgz

(4)安装 Python 环境

再进入 Python 解压目录,如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd Python-3.7.4

随后我们依次输入如下命令安装 Python 环境。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./configure
make && make install

(5)验证安装结果

最后,我们在命令行输入 Python3 命令即可验证安装结果,如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@binghe102 ~]# python3
Python 3.7.4 (default, Nov 26 2023, 15:04:38) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.

我们可以看到,输入 Python3 后成功输出了 Python 的版本为3.7.4,说明我们 Python3 环境安装成功。

04.基于 Python+Hadoop 统计单词数量

我们在实现统计单词数量的过程中,我们可以基于 Python 分别实现 Hadoop 的 Mapper 程序和 Reducer 程序。

注意:此部分的操作是以 Hadoop 用户登录 CentOS7 服务器进行的。

4.1 实现 Mapper 程序

首先,我们在服务器的 /home/hadoop/python 目录下创建 mapper.py 文件,具体代码如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
#读入标准输入中的数据
for line in sys.stdin:
    #去除首尾空格
    line = line.strip()
    #以空格拆分每行数据
    words = line.split()
    #遍历单词列表,输出中间结果数据,以\t分隔
    for word in words:
        print('%s\t%s' % (word, 1))

上述我们可以看到,mapper.py 中的代码主要是从标准输入读取数据,并且去除读取数据的首尾空格,然后按照空格进行拆分后,遍历拆分后的数组,即可将数组的每个元素输出到标准输出。

4.2 实现 Reducer 程序

我们在服务器的 /home/hadoop/python 目录下创建 reducer.py 文件,具体代码如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys
#当前处理的单词
handler_word = None
#当前处理的数量
handler_count = 0
#当前中间结果中的单词
word = None
#从标准输入读取数据
for line in sys.stdin:
    #移除首尾空格
    line = line.strip()
    #以\t拆分map的中间结果数据
    word, count = line.split('\t', 1)
    try:
        count = int(count)
    except ValueError:
        continue
    if handler_word == word:
        handler_count += count
    else:
        if handler_word:
            #当前处理的统计结果到标准输出
            print('%s\t%s' % (handler_word, handler_count))
        handler_word = word
        handler_count = count
#输出最后一个处理的单词统计信息
if handler_word == word:
    print('%s\t%s' % (handler_word, handler_count))

可以看到,reducer.py 的功能是读取 mapper.py 输出的结果数据,并且会统计每个单词的数量,然后输出最终的结果数据。

4.3 构建输入数据

我们在服务器的 /home/hadoop/input 目录下新建 data.input 文件,文件内容如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hadoop mapreduce hive flume
hbase spark storm flume 
sqoop hadoop hive kafka
spark hadoop storm

可以看到,我们在 data.input 文件中添加了一些单词数据作为测试数据文件。

4.4 基于 Hadoop 运行 Python 程序

基于 Hadoop 运行 Python 程序,我们在命令行输入如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
hadoop jar /usr/local/hadoop-3.2.0/share/hadoop/tools/lib/hadoop-streaming-3.2.0.jar -file /home/hadoop/python/mapper.py -mapper "python3 mapper.py" -file /home/hadoop/python/reducer.py -reducer "python3 reducer.py" -input /home/hadoop/input/data.input -output /home/hadoop/output

其中,上述命令的参数含义如下所示。

  • hadoop jar:使用 Hadoop 运行程序。
  • /usr/local/hadoop-3.2.0/share/hadoop/tools/lib/hadoop-streaming-3.2.0.jar:Hadoop 流式 API 所在的 Jar 包,主要提供了其他语言的编程接口。
  • -file /home/hadoop/python/mapper.py:指定 Map 阶段 Python 程序的目录位置。
  • -mapper "python3 mapper.py":指定 Map 阶段 Python 程序的执行命令。
  • -file /home/hadoop/python/reducer.py:指定 Reduce 阶段 Python 程序的目录位置。
  • -reducer "python3 reducer.py":指定 Reduce 阶段 Python 程序的执行命令。
  • -input /home/hadoop/input/data.input:指定测试文件的目录。
  • -output /home/hadoop/output:指定输出结果的目录。

在输出的日志中存在如下信息,说明我们成功基于 Hadoop 运行了 Python 编写的 MapReduce 程序。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INFO mapreduce.Job:  map 100% reduce 100%
INFO mapreduce.Job: Job job_local307776602_0001 completed successfull

接下来,我们查看 /home/hadoop/output 目录下的输出内容,如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-bash-4.2$ ll /home/hadoop/output
total 4
-rw-r--r--. 1 hadoop hadoop 76 Nov 26 15:32 part-00000
-rw-r--r--. 1 hadoop hadoop  0 Nov 26 15:32 _SUCCESS

接着,查看 part-00000 文件的内容,如下所示。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-bash-4.2$ cat /home/hadoop/output/part-00000 
flume   2
hadoop  3
hbase   1
hive    2
kafka   1
mapreduce       1
spark   2
sqoop   1
storm   2

我们可以看到,在 part-00000 文件中输出了每个单词和对应的统计数量。

05.总结

最近一段时间以来,以 ChatGPT 为代表的大模型非常火热,但这些大模型背后需要海量的数据作为人工智能学习和分析的依据。就其参数模型而言,也是动辄几千亿、上万亿的参数模型,其背后同样需要海量的数据作为分析的依据。尽管当今在线实时分析技术已经非常成熟,但是离线批处理技术作为数据分析的兜底措施与数据校对机制,在当今大数据和人工智能时代仍旧是不可或缺的重要技术组成部分。

Hadoop 不仅仅支持以 MapReduce 为核心的离线批处理技术,其提供的 HDFS 分布式文件系统更是支持海量数据的可靠存储。另外,尽管 Hadoop 内部的核心功能是使用 Java 编写的,但是 Hadoop 支持多种编程语言来实现海量数据的离线批处理技术,考虑到 Python 在数据分析和统计方面的优势,Hadoop 自然也支持基于 Python 实现海量数据的离线批处理技术。所以,Python+Hadoop 仍旧是 ChatGPT 时代,实现海量数据离线批处理分析和统计的重要组合技术。

本文部分内容节选自《海量数据处理与大数据技术实战》,主要介绍了 Hadoop 的基础知识,并通过 HDFS、MapReduce 和 YARN 三个角度分别介绍了 Hadoop 的原理与运行机制,并以实战角度搭建 Hadoop 单机环境、安装 Python3 运行环境,最后基于 Python+Hadoop 实现了统计单词数量的案例程序。

希望大家可以从本文中有所收获,更多精彩内容欢迎阅读《海量数据处理与大数据技术实战》一书。

-End-

原创作者|冰河

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
实体店生意不好做,小程序为线下门店经营解决哪些痛点?
如今实体店的运营成本越来越高,店面租金、人工成本、营销广告等成本逐年攀升,再加上互联网电商的冲击,门店客流少之又少,这给商家带来不小的压力,商家要做的就是想尽办法拓宽客流来源渠道,这样才有可能赚到钱。
得有店小程序
2020/04/17
1.4K0
干货|揭秘2020年最新的24招小程序运营玩法
小程序面世三年,在电商方面,为企业创造了超过100亿的gmv,而商家们该如何落地布局,抢占小程序电商红利呢?今天,新爷从我们服务过的众多商户中,总结出了24招高流量、高裂变、高转化、高复购的最新运营玩法,给电商企业以借鉴,让你赢在2020!
云店加小程序分享
2020/04/30
2.3K0
从0到57万,这个小程序是这样做到的!
以上例子都表明:营销活动设置的好,小程序才能快速吸引更多新用户。为了给广大客户提供更多案例,2018年6月29日下午,场景录培训部在腾讯众创空间开展了线下培训交流,本次培训的主题“渠道推广”,以场景录客户东西小屋为案例,为到场客户详细分析了小程序推广的方式。
场景录小程序
2018/07/03
3.6K0
从0到57万,这个小程序是这样做到的!
最全小程序电商玩法 18式!
小程序电商风头正劲,大有抢占平台电商的势头。面对流量红利,商家该如何抢占微信的社交流量,如何玩转小程序电商?本文将从裂变拉新,转化,留存 3 个角度共 36 个招式盘点最全的小程序玩法,助你玩转小程序电商。
用户1745481
2019/01/08
2.3K0
小程序风口已来,商家的财富自由之路,小程序来了,如何运营推广?
基于互联网、移动互联网创业的任何一个新平台,创业之初都是有流量红利的,抓住了流量红利也就占据了成本优势。今年年底之前,小程序的流量红利会随着获客成本的大幅上涨而消失,而小程序领域的资本都会向头部公司集中。
用户1745481
2019/01/09
8280
微信小程序运营和推广方法 新手如何快速上手去找新用户
微信小程序线上入口众多,且基于微信这个社交大平台,但对于一个专注线下的刚刚上线的实体店小程序,没有流量、没有用户,该如何去做推广呢? ​ 作为一个运营者或者商家来说,我们应该要怎么去运营小程序?其实小
速成应用小程序开发平台
2018/06/25
8660
干货|细数小程序裂变营销方式,让小程序每天涨粉1000人
在微信、抖音、百度、支付宝四大小程序平台中,微信小程序自带社交传播属性,无疑具有良好的裂变效果,可以用来快速积累粉丝和用户。但很多初创品牌和小企业使用微信小程序后却发现,由于缺乏品牌效应和种子用户,很难启动裂变活动。
云店加小程序分享
2020/05/15
2K0
独家:行业最全小程序功能组件分析报告出炉!
企鹅号小编
2017/12/27
3.5K0
独家:行业最全小程序功能组件分析报告出炉!
微信小程序的主流推广方式有哪些?
小程序推广的方法有很多,但据我观察最有效的还是裂变推广,对于拥有小程序的商家而言,小程序裂变是必须要掌握的推广方法。
微盛企微管家
2018/07/25
4.8K0
微信小程序的主流推广方式有哪些?
行业|小程序线上+线下打通区块链安全存储场景体验链
当下,随着线上线下融合不断加速,新一代的营销玩法趋于多样化。在消费升级和互联网+思维的双重影响下,各行通过结合小程序实现更多无限可能性。面对越来越多的选择,消费者对场景的需求、产品的要求也愈来愈高。能够拥抱变化,长期提供超预期体验的门店,正在抢占新一轮风口。来自北京的区块链资产安全解决品牌“库神钱包”正以转型升级之势实现多样化的市场运营。
微宝阁
2019/12/02
24.3K0
酒店小程序10种推广应用方式
酒店拥有小程序只是基础,能玩转小程序运营才是关键。本文将会简单讲述十种最实用的小程序推广策略,结合具体案例阐述酒店如何在拥有小程序后玩转小程序,快速实现小程序的推广。
用户1745481
2019/01/09
1.9K0
干货|小程序6招运营推广指南,教你做好小程序营销!
当用户第一次进入到了小程序的首页,如果小程序的首页简洁明了、美观清晰、能够让用户直观了解到你的核心的业务,那将是很大的加分项。因此小程序的首页列表需要逻辑清楚、分类恰当、页面美观整洁,图标符合主题,名称简短,让用户能够一目了然。这样用户才有心情继续浏览下去哦!
云店加小程序分享
2020/04/29
1.1K0
教你如何玩转微信小程序运营规划
其实对于小程序的定义很多人认为它是一个自带流量自带吸金属性的应用,对于微信来说,它是一个平台也是一个生态,整个互联网营销也会因为小程序的到来而不同,微信小程序是互联网以来最便捷的营销工具。
微宝阁
2018/07/09
1.7K0
教你如何玩转微信小程序运营规划
干货|小程序运营:教你如何快速营销获客!
随着获客成本越来越高,裂变用户对于所有行业来说是非常大的一个难题。在流量成本越来越贵的当下,小程序电商的获客成本几乎为零,成为商家收割下一波电商增量市场的重要利器。
云店加小程序分享
2020/04/14
1.3K0
小程序公开课 | 学会这些,你就知道如何推广小程序了!
社群分享主要有两种:一种是群小程序,另一种是聊天小程序。以卡片形式出现在微信聊天界面中,同时在聊天详情界面中也能找到小程序的日寇,点击后就能看见你与好友、群成员聊天里出现的小程序卡片,都会在这个列表里出现。
用户1745481
2019/01/09
5790
小程序推广的四大重要法则,裂变只排在第三!
小程序之所以被众多商家和企业重视,也是因为其易推广的特点。在流量成本如此高的情况下,小程序的低成本获客可以算是互联网的一股清流了。
用户1745481
2019/01/09
5420
案例 | 东鸽电器电商小程序,营销推广30天助力销售额突破30万!
在小程序无孔不入的当下,怎么利用小程序提高有效流量,最终实现从流量到销量的高效转化,成为各商家关注的重点。除了通过微信“搜一搜”、社交分享、扫码等小程序自然入口外,利用拼团、秒杀、砍价等营销工具,是商家们吸引流量、保持用户稳定的绝佳营销武器。
微盛企微管家
2019/07/27
9620
案例 | 东鸽电器电商小程序,营销推广30天助力销售额突破30万!
案例丨食品百货“维采”,利用微信小程序实现营业额稳步上涨
在互联网微信小程序越来越火热的情况下,很多门店选择了小程序. 生活中,也有很多常见的门店,奶茶店,咖啡馆,便利店,水果店等等。在互联网小程序越来越火热的情况下,都选择了微信小程序。
极客小程序分享
2019/01/07
9230
案例丨食品百货“维采”,利用微信小程序实现营业额稳步上涨
干货丨小程序和APP推广方式汇总
无论产品以怎样的形式落地,都少不了推广和营销环节,走向大众,是产品实现价值的最终表现。
齿轮易创说互联网
2018/09/30
3.1K0
干货丨小程序和APP推广方式汇总
小程序的下半场,如何用产品思维抓住最后的红利
在小程序起伏一年多后,惧怕错过红利和风口的投资人,开始出现集体“恐慌性投资”的现象,随着微信给小程序更多的入口和流量,B 端开发者数量的猛增,投资人已经开始疯狂布局,据阿拉丁《2018 上半年小程序生态白皮书》显示,80%一线基金入场,上半年进场投资资金超过 30 亿人民币,包括金沙江、红杉中国、险峰长青、IDG、真格基金等。在小程序的下半场,入局者如何将小程序融入自己的产业链,真正利用其优势实现企业增长呢?
齿轮易创说互联网
2018/12/05
8330
小程序的下半场,如何用产品思维抓住最后的红利
推荐阅读
相关推荐
实体店生意不好做,小程序为线下门店经营解决哪些痛点?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验