从零搭建大数据处理管道:基于Hadoop+Spark+Hive的实战指南

从零搭建Hadoop+Spark大数据平台:本地部署、核心验证与实战指南 大数据处理的核心在于对海量、多源、高速增长的数据进行高效存储、计算与分析,其技术原理通常基于分布式系统架构,通过将任务分解并行处理来突破单机性能瓶颈。这一技术价值体现在能够为数据密集型应用提供可扩展、高容错的解决方案,广泛应用于互联网、金融、物联网等领域的用户行为分析、实时风控和智能推荐等场景。本文聚焦于大数据技术栈的本地化部署与实践,详细阐述了以Hadoop分布式文件系统(HDFS)和YARN资源调度为核心,集成Spark计算引擎的伪分布式环境搭建过程。内容涵盖从Java环境配置、SSH免密登录到HDFS 阅读详情

在实际的大数据应用场景中,数据清洗与整合是构建可靠分析模型的第一步。面对来源多样、格式不一、质量参差的原始数据,如何高效地将其转化为结构清晰、质量可控的中间层数据,是每个数据工程师都会遇到的挑战。本文将围绕一个典型的“大数据交友”数据处理流程,深入探讨如何从零开始,使用主流的开源大数据工具链,搭建一个可扩展、可维护的数据处理管道。我们将聚焦于数据采集、清洗、转换、存储和验证的全链路实践,旨在为读者提供一个从概念到落地的完整技术方案。

本文适合具备一定编程基础(如 Python/Java)和数据库知识,希望了解或从事大数据平台开发、数据仓库建设的工程师。通过本文,你将掌握如何设计一个批处理数据管道,理解各组件(如 HDFS, Hive, Spark)的职责与协作方式,并能够根据文中提供的代码和配置,在自己的开发环境中复现一个最小化的数据处理流程。

1. 理解数据处理管道的核心架构

在动手搭建之前,我们需要先理清一个典型批处理数据管道的核心组件及其职责。这有助于我们在后续配置和编码时,明确每一步操作的目的和边界。

1.1 数据源与采集层

数据通常来源于业务数据库、日志文件、第三方 API 或消息队列。对于“交友”类场景,原始数据可能包括用户注册信息、用户行为日志(如浏览、点击、匹配)、关系图谱等。这些数据最初可能是 MySQL 中的表、服务器上的 Nginx 日志文件,或是通过 Kafka 实时推送的事件流。在本文的示例中,为简化环境依赖,我们将使用本地生成的模拟数据文件(如 CSV、JSON 格式)作为数据源,模拟从业务系统导出的数据快照。

1.2 分布式存储层(HDFS)

原始数据文件需要被集中存储在一个可扩展、高容错的存储系统中,以便后续的分布式计算框架能够高效访问。Hadoop Distributed File System (HDFS) 是这一层的经典选择。它的核心思想是将大文件切分成块(Block),分散存储在集群的多个节点上。对于数据处理管道而言,HDFS 提供了一个统一的命名空间,我们后续的所有操作都将基于 HDFS 上的文件路径进行。

1.3 分布式计算引擎(Spark)

数据清洗和转换是计算密集型的任务。Apache Spark 因其基于内存计算、API 丰富(支持 Scala、Java、Python、R)以及完善的生态(Spark SQL, MLlib, Structured Streaming)而成为首选。Spark 的核心抽象是弹性分布式数据集(RDD)和更高级的 DataFrame/Dataset。我们将主要使用 Spark SQL 和 DataFrame API 来执行数据清洗、过滤、聚合和连接操作,其代码逻辑与使用 Pandas 或 SQL 非常相似,但具备分布式执行能力。

1.4 数据仓库与查询层(Hive)

清洗转换后的结果数据需要被持久化,并提供便捷的查询接口。Apache Hive 构建在 HDFS 之上,提供了类 SQL(HiveQL)的查询功能,并将 SQL 语句转换为 MapReduce 或 Spark 任务执行。更重要的是,Hive 的“表”概念管理了数据的元数据(如 Schema、分区信息、存储格式),使得用户可以通过 SQL 直接访问底层文件,而无需关心文件的具体路径和格式。我们将把 Spark 处理后的结果数据保存为 Hive 表,供下游的分析师或报表系统使用。

1.5 任务调度与监控

一个完整的数据管道需要定时、自动化地执行。这涉及到任务依赖管理、失败重试、报警等。虽然本文聚焦于单次作业的执行,但在生产环境中,通常会使用 Apache Airflow、DolphinScheduler 或 Azkaban 等工具来编排和调度整个数据处理 DAG(有向无环图)。

2. 环境准备与依赖配置

为了在本地或测试环境快速验证整个流程,我们采用伪分布式模式搭建一个最小化的 Hadoop + Spark + Hive 环境。以下步骤在 Ubuntu 20.04 LTS 或 CentOS 7 上验证通过,其他 Linux 发行版可作参考。

2.1 基础环境与 Java

确保系统已安装 SSH 和 JDK。大数据生态组件大多依赖 Java 8 或 Java 11。

# 更新包管理器并安装 SSH 和 JDK
sudo apt-get update
sudo apt-get install -y ssh openjdk-8-jdk-headless

# 验证 Java 安装
java -version
# 应输出类似:openjdk version "1.8.0_312"

配置 JAVA_HOME 环境变量,编辑 ~/.bashrc 或 ~/.bash_profile :

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # 路径可能因系统而异,请用 `update-alternatives --config java` 查找
export PATH=$JAVA_HOME/bin:$PATH

执行 source ~/.bashrc 使配置生效。

2.2 Hadoop 伪分布式安装

我们选择 Hadoop 3.2.x 版本进行安装。

  1. 下载与解压 :

    wget https://archive.apache.org/dist/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz
    tar -xzf hadoop-3.2.4.tar.gz -C /opt/
    sudo ln -s /opt/hadoop-3.2.4 /opt/hadoop
    
  2. 配置环境变量 :编辑 ~/.bashrc ,添加:

    export HADOOP_HOME=/opt/hadoop
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export YARN_HOME=$HADOOP_HOME
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    

    执行 source ~/.bashrc 。

  3. 修改 Hadoop 配置文件 :进入 $HADOOP_CONF_DIR 。

    • core-site.xml :配置默认文件系统和临时目录。
      <configuration>
          <property>
              <name>fs.defaultFS</name>
              <value>hdfs://localhost:9000</value>
          </property>
          <property>
              <name>hadoop.tmp.dir</name>
              <value>/tmp/hadoop-${user.name}</value>
          </property>
      </configuration>
      
    • hdfs-site.xml :配置 HDFS 副本数(伪分布式设为1)。
      <configuration>
          <property>
              <name>dfs.replication</name>
              <value>1</value>
          </property>
          <property>
              <name>dfs.namenode.name.dir</name>
              <value>file://${hadoop.tmp.dir}/dfs/name</value>
          </property>
          <property>
              <name>dfs.datanode.data.dir</name>
              <value>file://${hadoop.tmp.dir}/dfs/data</value>
          </property>
      </configuration>
      
    • mapred-site.xml 和 yarn-site.xml :对于基础的 HDFS 和 Spark on YARN 模式,需要配置 YARN。为简化,我们先用 Spark 的本地模式或 Standalone 模式。若需 YARN,请参考官方文档进行配置。
  4. 配置 SSH 免密登录 :Hadoop 脚本需要 SSH 到 localhost。

    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 0600 ~/.ssh/authorized_keys
    # 测试
    ssh localhost
    
Hadoop+Spark+Hive构建智慧交通客流预测系统 大数据处理技术通过分布式存储与计算框架解决海量数据挑战,其中Hadoop提供可靠的分布式存储基础,Spark凭借内存计算实现高速处理,Hive则简化了结构化数据查询。这种技术组合在交通领域尤为重要,能高效处理卡口设备产生的TB级数据。基于机器学习的时间序列预测是典型应用场景,通过特征工程提取时空特征后,随机森林等算法可实现90%以上的客流预测准确率。本文详解的智慧交通系统实战方案,整合了Flume实时采集、Spark MLlib模型训练和Hive数据仓库等核心技术,为城市交通管理提供决策支持。 阅读详情

相关推荐

基于Hadoop+Spark+Hive的小红书评论情感分析实战

情感分析作为自然语言处理的重要分支,通过机器学习算法自动识别文本中的情感倾向。其核心技术包括特征提取、分类模型构建和结果可视化。在大数据场景下,结合Hadoop+Spark+Hive技术栈,可以实现对TB级社交媒体数据的高效处理。以小红书评论分析为例,通过BERT模型微调和分布式计算优化,准确率可达88%。这种技术方案在电商舆情监控、用户反馈分析等场景具有重要价值,能帮助企业快速把握市场动向。项目中涉及的HDFS存储优化、Spark SQL性能调优等实战经验,对构建企业级大数据平台具有直接参考意义。

weixin_30363981的博客 300

大数据处理框架选型指南:何时选择Spark而非Hadoop?

维度Spark计算模型两阶段批处理,中间结果写磁盘多阶段DAG,中间结果存内存延迟高(小时级)低(毫秒/秒级,支持实时)适用场景超大规模离线批处理实时/近实时、迭代计算、复杂 pipelines生态定位存储+计算全栈计算引擎(依赖HDFS等存储)graph TDA[开始] --> B{需要实时/近实时处理?B -->|是| C[选Spark]B -->|否| D{需要迭代计算/图计算?D -->|是| C[选Spark]D -->|否| E{需要复杂数据Pipelines?

AI大模型应用之禅 805

全面深入Hadoop大数据处理框架权威指南

本文还有配套的精品资源,点击获取 简介:《Hadoop权威指南》是大数据领域的经典之作,系统性地讲解了Apache Hadoop开源框架的原理与应用。Hadoop的核心由HDFS和MapReduce组成,分别提供分布式数据存储和并行处理能力。书中详细介绍Hadoop架构及其生态系统,包括YARN、HBase、Pig、Hive和Spark等组件的使用和最佳实践,同时涉及安装、...

weixin_42514750的博客 3039

大数据处理技术实例详解:Spark、Hadoop、Flink、Storm、Kafka

Apache Hadoop是一个开源框架,最初由Doug Cutting和Mike Cafarella于2005年推出,旨在从单一服务器扩展到成千上万台机器,每台机器都提供本地计算和存储。Hadoop的发展大致可以分为三个阶段:初始阶段(2003-2005):在Hadoop项目诞生之前,Google已经发表了关于其在大数据处理方面使用的两个核心组件:Google File System (GFS) 和 MapReduce 的学术论文。这两个概念成为Hadoop开发的原型。

weixin_30021053的博客 1007

GPS-SDR-SIM使用详解

GPS-SDR-SIM 是一款开源工具,能够生成 GPS 基带信号数据流,这些数据流可通过软件定义无线电(SDR)平台(如 ADALM-Pluto、bladeRF、HackRF、USRP 等)转换为射频(RF)信号。简单来说,它能模拟 GPS 卫星信号,帮助开发者或爱好者测试 GPS 接收设备的性能,而无需依赖真实的卫星信号。

qq_35621280的博客 1230

感应电机无速度传感器FOC控制原理与Simulink仿真实践

无速度传感器FOC控制是电机驱动领域的重要技术,通过算法重构实现仅依赖电气参数的闭环控制。其核心原理基于电机数学模型,利用Clark/Park变换和滑模观测器估算转子位置和转速。这种技术在工业伺服系统中具有显著价值,能有效降低系统成本并提高可靠性。典型应用场景包括纺织机械、风机驱动等需要精确转速控制的设备。本文以感应电机为例,详细解析了无感FOC的Simulink实现方法,特别关注滑模观测器设计和双闭环控制策略,为工程师提供可直接复用的参数调优经验。

weixin_29189987的博客 256

CoppeliaSim(原V-REP)新手上路

CoppeliaSim(原V-REP)是一个机器人仿真平台,里面有很多来自别的公司的机器人模型以及完备的物理引擎,我们可以通过python,c++,matlab等语言控制里面的机器人。,您也可以在官网中Downloads里找您需要的版本,一般只需要下载EDU版本就可以了,我下载的是v4.1.0 windows EDU版本。在版本V4之前,CoppeliaSim叫V-REP,在官网可以下载到之前的V-REP版本。

qq_37051669的博客 4万+

python k线顶分型_【缠论】分型、笔的定义及其程序化

K线包含关系处理和分型的定义如果一个K线的高低点全在另一K线的范围里,称之为包含关系。针对这种K线,需要进行一些处理,去除包含关系,处理方法:向上时,把两K线的高点当高点,而两K线低点中的较高者当成低点;反之,当向下时,把两K线的低点当低点,而两K线高点中的较低者当成高点,这样就把两K线合并成一新的K线。经过这样的处理,所有K线图都可以处理成没有包含关系的图形。两K线的包含关系,可以分成四种:1)...

weixin_39717152的博客 2817

STM32与K210串口通信

这篇文章是为了填上一篇埋下的坑,k210和STM32通过串口通信,我是采用数据包的形式发送数据的,因为K210发送的数据有几种,采用数据包的形式发送比较安全。本文代码运行的平台是STM32F103C8T6和K210 Dock,只涉及到K210发送数据给STM32,stm32将接受到的数据显示到0.96寸OLED屏上。

qq_70715693的博客 3万+

RDM协议控制端实战:从数据包构造到高效设备发现算法

本文深入探讨了RDM协议控制端的核心开发流程,涵盖从数据包构造、发送到响应解析的全过程。重点解析了如何利用二分搜寻算法高效实现网络设备发现,并分享了组包、解包中的关键代码实现与常见调试技巧,为舞台灯光与智能硬件领域的嵌入式开发提供实战指导。

week9的博客 451

YOLOv8融合改进 更换检测头为Detect_DyHead同时添加C2f_DBB模块

yolov8独家训练测试融合网络结构,提供详细步骤详细代码,手把手教你在yolov8官方包中把检测头更换为Detect_DyHead检测头,并且将原始的C2f模块更换成C2f_DBB模块,提高检测精度,亲测在多个数据集上有涨点!!!!!

分享一些自己改进代码的实例 4741

PCL点云库入门(第6讲)——PCL库中Eigen数学工具库的基本使用(持续更新)

Eigen库是一个高性能的C++模板库,专注于线性代数、矩阵和向量运算,以及相关的数值分析和算法。在Eigen库中,所有的矩阵和向量均被视为矩阵模板类的实例。向量可以被看作是特殊形式的矩阵,具体表现为只包含1行或1列。

qq_36812406的博客 1741

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 教育科技中的个性化学习路径优化技术解析
下一篇: 小型MoE模型:AI大模型平民化部署的新路径
weixin_30420305
博客等级 码龄11年 105粉丝 1367原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值