首页/新闻资讯/正文详情

Spark 2.2 实时新闻网分析:单机跑通端到端数据流

发布时间:2026/9/25 1:23:52 来源:云帆数科 栏目:资讯中心
Spark 2.2 实时新闻网分析:单机跑通端到端数据流
简介本资源是一套面向计算机专业本科生的毕业设计/课程设计实战项目聚焦大数据实时分析场景基于Spark 2.2构建新闻网数据流处理与智能推荐系统适用于大数据入门到进阶学习者巩固分布式计算、流式处理与HBase集成等核心能力。压缩包共403个文件以364个XML配置文件涵盖Maven依赖、Spark作业参数及Flume-HBase通道定义为主干辅以14个Scala核心处理逻辑、5个Java工具类如Kafka异步写HBase序列化器、日志读写组件、4个Shell部署脚本及结构化文档MD/TEXT整体仅262KB轻量易部署。已有241人学习下载项目经助教审定、本地全链路编译验证含完整目录结构如structured-streaming-demo、hbase_flume等模块与可运行环境配置说明开箱即用特别适合快速理解新闻数据采集→清洗→实时统计→用户行为建模→推荐结果落库的端到端工业级流程。1. 为什么用 Spark 2.2 做新闻网实时分析不是“炫技”而是毕业设计里最稳的落地选择你手头有一堆新闻网爬虫日志每秒几百条新闻标题、来源、发布时间、点击量、用户停留时长想在毕设里做出“实时”效果——不是等凌晨跑完离线任务才出报表而是大屏上数字跳动、热词榜3秒刷新、突发舆情自动标红。这时候选 Spark 2.2不是因为版本号带“2.2”显得高级而是它在2017–2019年高校实验室和中小型项目中形成的事实标准生态Scala 2.11 兼容性成熟、Kafka 0.10.x 对接零踩坑、Streaming 模式稳定不丢数、本地伪分布式调试成本极低——比硬上 Flink 1.12当时文档稀疏、IDEA 插件报错多或强推 Spark 3.x依赖包冲突频发、YARN 兼容需调参更适合学生单人交付。本项目不碰集群运维黑盒聚焦“从原始日志到可交互大屏”的端到端链路用 Structured Streaming 接 Kafka 源用 DataFrame API 做清洗与统计用 JDBC 写入 MySQL 供 Flask 大屏读取全程代码可单机复现、调试日志可逐行追踪、答辩演示能扛住连续5分钟压测。适合计算机/软件工程专业、已学过 Java/Scala 基础、有 Linux 命令和 MySQL 操作经验的同学不是教你怎么搭10节点YARN集群而是教你用一台8G内存笔记本跑通真实数据流闭环。2. 用 Spark 2.2 在本地跑通新闻网实时分析最小可行命令与三步数据流闭环2.1 环境准备只装这4个东西拒绝“环境配置玄学”Spark 2.2 的核心依赖是 Scala 2.11 和 Hadoop 2.7非必须但避免 WARNKafka 0.10.2.2 是当时最稳的客户端版本。不要下载官网最新版——Spark 2.2.0 官方二进制包已内置 scala-2.11.8 和 hadoop-2.7.3直接解压即用。Kafka 单机版用kafka_2.11-0.10.2.2.tgz注意 Scala 版本匹配。MySQL 5.7支持 TIMESTAMP(3) 微秒精度用于对齐事件时间。JDK 1.8Spark 2.2 不支持 JDK 9。提示所有路径避免中文和空格。建议统一放在/opt/下/opt/spark-2.2.0,/opt/kafka_2.11-0.10.2.2,/opt/mysql。环境变量只加SPARK_HOME和PATH不加HADOOP_HOME本地模式不用 HDFS。# 验证 Spark 本地模式是否就绪无需启动master/worker /opt/spark-2.2.0/bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master local[2] \ /opt/spark-2.2.0/examples/jars/spark-examples_2.11-2.2.0.jar 10成功输出Pi is roughly 3.14...即表示 Spark 运行时正常。关键参数说明local[2]表示用2个线程模拟并行spark-examples_2.11-2.2.0.jar中的_2.11表明该 jar 编译于 Scala 2.11若换成_2.12版本会报NoSuchMethodError——这是 Spark 2.2 时代最典型的版本错配翻车点。2.2 数据源模拟用 Python 脚本向 Kafka 发送新闻网日志非爬虫保真且可控真实新闻网日志结构通常含id(UUID),title(String),source(String),publish_time(ISO8601),clicks(Int),duration_sec(Int),user_region(String)。我们不用真实爬虫涉及反爬、IP封禁、证书问题而用kafka-python库生成符合业务逻辑的模拟流# producer_news.py from kafka import KafkaProducer import json import time import random from datetime import datetime sources [人民日报, 新华社, 澎湃新闻, 南方周末, 财新网] regions [北京, 上海, 广东, 浙江, 江苏] producer KafkaProducer( bootstrap_servers[localhost:9092], value_serializerlambda v: json.dumps(v, ensure_asciiFalse).encode(utf-8) ) for i in range(10000): msg { id: fnews_{i:06d}, title: f【{random.choice([科技, 财经, 国际, 社会])}】{random.choice([AI突破, 股市大涨, 外交进展, 暴雨预警])}引发热议, source: random.choice(sources), publish_time: datetime.now().isoformat(), # 用当前时间模拟实时发布 clicks: random.randint(100, 5000), duration_sec: random.randint(30, 300), user_region: random.choice(regions) } producer.send(news_topic, valuemsg) time.sleep(0.1) # 控制发送节奏模拟每秒10条 producer.close()运行前确保 Kafka 已启动# 启动 ZooKeeperKafka 0.10.2.2 自带 /opt/kafka_2.11-0.10.2.2/bin/zookeeper-server-start.sh \ /opt/kafka_2.11-0.10.2.2/config/zookeeper.properties # 启动 Kafka Broker /opt/kafka_2.11-0.10.2.2/bin/kafka-server-start.sh \ /opt/kafka_2.11-0.10.2.2/config/server.properties 然后创建 topic/opt/kafka_2.11-0.10.2.2/bin/kafka-topics.sh --create --topic news_topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1。此步骤不可跳过——Spark Streaming 会因 topic 不存在而静默失败无任何错误日志。2.3 实时处理核心Structured Streaming 读 Kafka → 清洗 → 统计 → 写 MySQLSpark 2.2 的 Structured Streaming 已支持 event-time windowing 和 watermark 去重比旧版 DStream 更易写、更易调。以下 Scala 代码保存为NewsAnalyzer.scala完成三件事1按5秒滚动窗口统计各来源点击量2提取标题关键词用空格分词过滤停用词3将结果写入 MySQL 的hourly_source_stats表。// NewsAnalyzer.scala import org.apache.spark.sql._ import org.apache.spark.sql.functions._ import org.apache.spark.sql.types._ object NewsAnalyzer { def main(args: Array[String]): Unit { val spark SparkSession.builder() .appName(News Realtime Analysis) .master(local[2]) // 本地模式2线程 .config(spark.sql.adaptive.enabled, false) // Spark 2.2 不支持AQE必须关 .getOrCreate() import spark.implicits._ // 1. 从 Kafka 读取 JSON 流 val kafkaStream spark .readStream .format(kafka) .option(kafka.bootstrap.servers, localhost:9092) .option(subscribe, news_topic) .option(startingOffsets, latest) // 从最新开始避免历史积压 .load() .selectExpr(CAST(value AS STRING)) .as[String] .select(from_json(col(value), newsSchema).alias(data)) .select(data.*) // 2. 定义 schema显式声明比 inferSchema 稳定10倍 val newsSchema new StructType() .add(id, StringType) .add(title, StringType) .add(source, StringType) .add(publish_time, StringType) // 字符串后续转 timestamp .add(clicks, IntegerType) .add(duration_sec, IntegerType) .add(user_region, StringType) // 3. 清洗 统计窗口聚合 关键词提取 val resultStream kafkaStream .withColumn(event_time, to_timestamp(col(publish_time))) // 转为时间戳 .filter(col(event_time).isNotNull col(clicks) 0) // 过滤脏数据 .withWatermark(event_time, 10 minutes) // 允许10分钟乱序 .groupBy( window(col(event_time), 5 seconds), // 5秒滚动窗口 col(source) ) .agg( sum(clicks).alias(total_clicks), count(*).alias(news_count), avg(duration_sec).alias(avg_duration) ) .withColumn(window_start, col(window.start)) .withColumn(window_end, col(window.end)) .drop(window) // 4. 写入 MySQL使用 foreachBatch避免 foreachWriter 的序列化陷阱 resultStream.writeStream .foreachBatch { (batchDF: DataFrame, batchId: Long) batchDF .select(window_start, window_end, source, total_clicks, news_count, avg_duration) .write .format(jdbc) .option(url, jdbc:mysql://localhost:3306/news_db?useSSLfalseserverTimezoneUTC) .option(dbtable, hourly_source_stats) .option(user, root) .option(password, your_password) .mode(Append) .save() } .outputMode(Append) .start() .awaitTermination() } }关键参数说明spark.sql.adaptive.enabledfalseSpark 2.2 尚未实现 Adaptive Query ExecutionAQE开启会报NoSuchMethodErrorstartingOffsetslatest避免首次运行消费历史积压数据导致 OOMwithWatermark设置10分钟水印窗口计算会等待迟到数据超时则触发计算——这是实时系统“准确率 vs 延迟”的核心权衡点foreachBatch比foreachWriter更可靠避免 UDF 序列化失败常见于自定义连接池useSSLfalseserverTimezoneUTCMySQL 5.7 默认要求 SSL本地开发关掉时区必须显式指定否则timestamp字段写入为0000-00-00 00:00:00。编译与提交命令需提前sbt package打成 jar/opt/spark-2.2.0/bin/spark-submit \ --class NewsAnalyzer \ --master local[2] \ --packages org.apache.spark:spark-sql_2.11:2.2.0,org.apache.spark:spark-streaming-kafka-0-10_2.11:2.2.0 \ target/scala-2.11/news-analyzer_2.11-1.0.jar--packages参数必须指定 Kafka 包版本spark-streaming-kafka-0-10_2.11:2.2.0且 Scala 版本_2.11与 Spark 主包严格一致——这是 Spark 2.2 生态中最常被忽略的依赖锁死规则。3. 新闻数据清洗与特征工程从原始日志到可分析字段的5个必做动作3.1 标题关键词提取不用复杂 NLP用规则词典精准抓热点新闻网标题含大量噪声“【快讯】XXX公司发布2023年报净利润增长12.3%附PDF下载”。直接分词会得到“快讯”“PDF”“下载”等无效词。我们采用轻量级规则去括号与符号正则\\(.*?\\)|\\[.*?\\]|【.*?】替换为空停用词过滤加载stopwords.txt含“的”“了”“和”“在”“是”等200个中文停用词长度过滤保留2~8字词排除“AI”“CEO”等过短词及“人工智能技术发展现状与未来趋势分析”等过长词业务词强化白名单加入“碳中和”“元宇宙”“ChatGPT”等当年热点词确保不被过滤TF-IDF 加权对窗口内所有标题词计算 TF-IDF取 Top10 作为该窗口热词。Scala 实现嵌入前述 pipeline// 在 kafkaStream 后添加 val cleanTitle udf((title: String) { if (title null) else { title.replaceAll(\\(.*?\\)|\\[.*?\\]|【.*?】, ) .replaceAll([^\\u4e00-\\u9fa5a-zA-Z0-9], ) .replaceAll(\\s, ) .trim } }) val keywordsUDF udf((title: String) { if (title null || title.isEmpty) Seq.empty[String] else { val words title.split( ).filter(_.length 2 _.length 8) val stopwords Set(的, 了, 和, 在, 是, 我, 有, 和, 就, 不, 人, 都, 一, 一个, 上, 也, 很, 到, 说, 要, 去, 你, 会, 着, 没有, 看, 好, 自己, 这) words.filter(!stopwords.contains(_)).toSeq } }) val processedStream kafkaStream .withColumn(clean_title, cleanTitle(col(title))) .withColumn(keywords, keywordsUDF(col(clean_title))) .withColumn(keyword_exploded, explode(col(keywords)))注意explode后需groupBy(keyword_exploded).count()才能得到词频不能直接对keywords数组count——这是初学者最常写的错误。3.2 时间字段标准化解决“publish_time”格式混乱的3种情况新闻网源时间格式五花八门ISO86012023-05-20T14:30:0008:00新华社中国标准时间2023年05月20日 14:30:00南方周末Unix 时间戳1684589400部分 API 接口Spark 2.2 的to_timestamp函数只支持一种格式需用coalesce合并多解析结果val parseTime udf((t: String) { if (t null) null else if (t.matches(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}[\\\\-]\\d{2}:\\d{2})) { // ISO8601 with timezone java.time.format.DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(t) } else if (t.matches(\\d{4}年\\d{2}月\\d{2}日 \\d{2}:\\d{2}:\\d{2})) { // Chinese format java.time.format.DateTimeFormatter.ofPattern(yyyy年MM月dd日 HH:mm:ss).parse(t) } else if (t.matches(\\d{10})) { // Unix timestamp new java.sql.Timestamp(t.toLong * 1000L) } else null }) val timeStream kafkaStream .withColumn(parsed_time, parseTime(col(publish_time))) .withColumn(event_time, coalesce( to_timestamp(col(publish_time), yyyy-MM-ddTHH:mm:ss.SSSXXX), to_timestamp(col(publish_time), yyyy-MM-dd HH:mm:ss), col(parsed_time).cast(timestamp) ) )coalesce返回第一个非 null 值避免when/otherwise嵌套过深。cast(timestamp)强制转换类型否则parsed_time是java.time.temporal.TemporalAccessor无法参与窗口计算。3.3 地域字段归一化把“北京市”“北京”“京”映射到标准编码user_region字段常出现别名“沪”“申城”→“上海”“粤”“珠三角”→“广东”。建一张region_mapping.csvraw_name,standard_name,code 北京,北京市,110000 沪,上海市,310000 申城,上海市,310000 粤,广东省,440000 珠三角,广东省,440000用 Broadcast Join 加载映射表val regionMap spark.read .option(header, true) .csv(/path/to/region_mapping.csv) .as[(String, String, String)] .collect() // 转为 driver 端数组 .toMap // keyraw_name, value(standard_name,code) val broadcastMap spark.sparkContext.broadcast(regionMap) val normalizedStream kafkaStream .withColumn(region_key, when(col(user_region).isinCollection(broadcastMap.value.keys.toSeq), col(user_region)) .otherwise(lit(未知)) ) .withColumn(standard_region, lookupUDF(col(region_key)) )lookupUDF是自定义函数内部查broadcastMap.value。Broadcast 变量比join小表更省内存且避免 shuffle——对地域这种小维度表是最佳实践。4. 避坑指南Spark 2.2 新闻实时分析的5个血泪经验4.1 现象Streaming 任务启动后无日志输出awaitTermination()一直阻塞原因Kafka topic 无数据或startingOffsets设置为earliest但 topic 为空Spark 会等待数据到达不报错也不退出。解决先用 Kafka console consumer 验证数据/opt/kafka_2.11-0.10.2.2/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic news_topic --from-beginning。若无输出检查 producer 脚本是否运行、topic 名称是否拼错大小写敏感、Kafka broker 是否监听localhost:9092非127.0.0.1。4.2 现象MySQL 写入报Communications link failure但手动连 MySQL 正常原因Spark Driver 连接 MySQL 用的是localhost而 MySQL 默认绑定127.0.0.1Docker 或某些 Linux 发行版下localhost解析为 IPv6 地址::1导致连接拒绝。解决MySQL 配置文件my.cnf中添加bind-address 0.0.0.0或 JDBC URL 改为jdbc:mysql://127.0.0.1:3306/...或在/etc/hosts中注释掉::1 localhost。4.3 现象窗口统计结果中total_clicks为 null但原始数据clicks字段有值原因sum(clicks)遇到null值会返回null而clicks字段在 JSON 中可能缺失如{ id: 123, title: ... }无 clicks 字段Spark 默认填充null。解决清洗阶段强制默认值.withColumn(clicks, coalesce(col(clicks), lit(0)))coalesce返回第一个非 null 值。4.4 现象foreachBatch写 MySQL 时抛Task not serializable原因在foreachBatch内部创建了非序列化对象如Connection、PreparedStatementSpark 尝试将其序列化到 Executor失败。解决所有数据库操作必须在batchDF的foreachPartition内完成且连接对象在 partition 内创建batchDF.foreachPartition { iter val conn DriverManager.getConnection(jdbc:mysql://..., user, pwd) iter.foreach { row val stmt conn.prepareStatement(INSERT ...) stmt.setLong(1, row.getAs[Long](window_start)) stmt.execute() } conn.close() }4.5 现象Kafka offset 提交失败日志反复打印Commit cannot be completed原因Spark Streaming 默认启用enable.auto.committrue但 Structured Streaming 要求手动管理 offset自动提交与 Spark 的 checkpoint 冲突。解决Kafka source 选项中显式关闭.option(enable.auto.commit, false)并确保checkpointLocation设置有效路径如/tmp/spark-checkpointSpark 会自动持久化 offset 到该目录。5. 大屏可视化与性能验证用 FlaskECharts 展示实时结果并验证端到端延迟5.1 构建轻量级大屏Flask API 返回 JSONECharts 动态渲染Spark 写入 MySQL 后用 Flask 提供 REST API 供前端轮询。关键点避免全表扫描用时间范围索引加速。MySQL 表结构添加复合索引CREATE INDEX idx_window_time ON hourly_source_stats (window_start, window_end);Flask 路由app.pyfrom flask import Flask, jsonify import pymysql app Flask(__name__) def get_latest_stats(): conn pymysql.connect(hostlocalhost, userroot, passwordyour_password, dbnews_db) cursor conn.cursor(pymysql.cursors.DictCursor) # 只查最近5分钟数据避免大数据量拖慢响应 cursor.execute( SELECT source, total_clicks, news_count, avg_duration, UNIX_TIMESTAMP(window_start) as start_ts, UNIX_TIMESTAMP(window_end) as end_ts FROM hourly_source_stats WHERE window_start DATE_SUB(NOW(), INTERVAL 5 MINUTE) ORDER BY window_start DESC LIMIT 20 ) data cursor.fetchall() conn.close() return data app.route(/api/stats) def stats_api(): return jsonify(get_latest_stats())前端 ECharts 配置每3秒轮询setInterval(() { fetch(/api/stats) .then(res res.json()) .then(data { const sources [...new Set(data.map(d d.source))]; const series sources.map(src ({ name: src, type: line, data: data.filter(d d.source src).map(d [d.start_ts * 1000, d.total_clicks]) })); chart.setOption({ series }); }); }, 3000);注意start_ts * 1000转为毫秒时间戳ECharts 时间轴要求。5.2 端到端延迟验证用事件时间戳与处理时间戳对比实时系统核心指标是End-to-End Latency从事件产生到大屏显示的时间差。在 producer 脚本中记录每条消息的sent_time在 Spark 中获取processing_time用current_timestamp()写入 MySQL 附加字段.withColumn(sent_time, from_unixtime(col(sent_time_ms) / 1000)) // producer 发送时的时间戳 .withColumn(processing_time, current_timestamp()) .withColumn(latency_sec, unix_timestamp(col(processing_time)) - unix_timestamp(col(sent_time)) )然后查SELECT AVG(latency_sec), MAX(latency_sec) FROM hourly_source_stats WHERE window_start ...。Spark 2.2 本地模式下5秒窗口的平均延迟应 ≤ 8 秒Kafka 生产消费Spark 处理MySQL 写入Flask 查询ECharts 渲染。若 15 秒检查 Kafkalinger.ms默认 0设为 5 即批量发送、Sparkspark.sql.adaptive.enabledfalse已关、MySQLinnodb_flush_log_at_trx_commit2牺牲一点持久性换速度。5.3 内存与线程调优让8G笔记本不 OOM 的3个参数Spark 2.2 本地模式默认分配1gexecutor memory对新闻网流处理明显不足。在spark-submit中显式设置--driver-memory 2g \ --executor-memory 3g \ --conf spark.sql.adaptive.enabledfalse \ --conf spark.sql.adaptive.coalescePartitions.enabledfalse \ --conf spark.sql.adaptive.skewJoin.enabledfalse \--executor-memory 3g是关键——Spark Streaming 每批次缓存 RDD内存不足会频繁 GC 导致延迟飙升。adaptive相关参数必须关否则 Spark 2.2 会尝试调用不存在的方法。此外在代码中限制 Kafka 每次拉取量.option(maxOffsetsPerTrigger, 1000) // 每次 trigger 最多处理1000条防爆内存这个值需根据clicks字段平均大小估算假设每条 JSON 200 字节1000 条 ≈ 200KB远低于 3G 内存上限。我带过6届毕设学生最容易卡在“明明代码跑通却看不到大屏数据”——最后发现是 MySQL 表字段类型不对window_start用了VARCHAR而非DATETIME或是 Flask 路由没加app.route装饰器。实时系统不是写完代码就结束而是每一层都要有可观测性Kafka 用kafka-console-consumer看源头Spark UI 看StreamingQuery的 input/output rateMySQL 用SELECT COUNT(*)看写入量浏览器 F12 看 API 返回值。四层日志对齐才能准确定位延迟在哪一环。希望帮到你。本文还有配套的精品资源点击获取

相关推荐

Delphi 12.3下TeeChart Pro VCL/FMX图表控件安装与实战指南
Delphi 12.3下TeeChart Pro VCL/FMX图表控件安装与实战指南

简介:面向Delphi 12.3开发者的Steema TeeChart Pro VCL/FMX 2023.39控件包,专注于VCL与FMX框架下的专业图表绘制,覆盖2D/3D、实时数据、OpenGL及多语言等常见场景,适合需要在桌面应用中实现数据可视化、报表展示或实时监控图表的开… · 2026/9/25 1:23:45

VOC摩托车电动车数据集5424张:格式解析、转换YOLO与训练避坑指南
VOC摩托车电动车数据集5424张:格式解析、转换YOLO与训练避坑指南

简介:一套面向摩托车目标检测的Pascal VOC格式数据集,含5424张园区闸口方向实拍图像及对应XML标注,适合算法工程师和计算机视觉学习者直接用于模型训练与算法验证。采集场景相对统一,画面以摩托车为主体,贴近安防监控与… · 2026/9/25 1:23:45

AI小说生成工作流:角色一致与跨章逻辑控制技术
AI小说生成工作流:角色一致与跨章逻辑控制技术

简介:这是一款面向小说创作者与AI内容开发者的智能写作辅助工具,基于大语言模型构建,专为解决长篇故事创作中世界观崩塌、角色失衡、伏笔遗漏与逻辑矛盾等核心痛点而设计。资源包共163个文件,以77个Python脚本(实现核心… · 2026/9/25 1:23:45

Atlas 300V 24G推理加速卡实战:从环境搭建到YOLO模型部署
Atlas 300V 24G推理加速卡实战:从环境搭建到YOLO模型部署

手里忽然多了一块Atlas 300V 24G,第一反应不是“真香”,而是“这到底算不算运算加速卡”。前一阵帮朋友在机房排查一台推理服务器,插的就是这块卡,网上一搜,结果大量的人都在问“atlas 300v 24g 是运算加速卡吗”“atl… · 2026/9/25 12:18:53

百度网盘下载速度慢?五个官方提速技巧与网络优化方案详解
百度网盘下载速度慢?五个官方提速技巧与网络优化方案详解

百度网盘下载速度慢,这个问题我太有发言权了。这些年因为工作原因,我几乎每天都要跟百度网盘打交道,传文件、收资源、备份素材,下载速度那叫一个“稳定”——稳定地慢。看着家里宽带测速能跑二三十MB/s,百度网盘却用几… · 2026/9/25 12:18:53

Atlas 300V 24G部署YOLO实战:从ONNX转换到多路推理
Atlas 300V 24G部署YOLO实战:从ONNX转换到多路推理

1. 先搞清楚:Atlas 300V 24G到底是个什么卡1.1 一张加速卡能解决什么实际问题如果你最近在折腾AI推理落地,大概率会碰到“atlas部署yolo”这个词条被反复提起来。我最初接触Atlas 300V 24G的时候,也和很多人一样带着同样的疑问:这… · 2026/9/25 12:18:47

OpenMontage实测:多AI Agent协作本地生成完整视频
OpenMontage实测:多AI Agent协作本地生成完整视频

前两天有个朋友问我,现在AI Agent炒得这么热,到底能不能让它自己从头到尾做完一条视频?我说你别急着下结论,我最近正好在折腾一个开源项目叫OpenMontage,专门做这件事——把大模型、配音、剪辑、字幕这些能力串在一起&… · 2026/9/25 12:18:47

Agent开发实战:用Agent Skills构建可维护的大模型应用
Agent开发实战:用Agent Skills构建可维护的大模型应用

我把大半年的Agent开发经验浓缩成了一套技能系统。这本来是我们团队内部为了解决“提示词越加越长、智能体越用越傻”这个问题而搭建的框架,后来整理成开源项目时,我给它起名就叫agent-skills。这个东西解决的核心痛点很直接:当你的智能体要干… · 2026/9/25 12:18:41

PaddleNLP 解语 ERNIE-CTM:面向中文文本挖掘的预训练模型与 WordTag 增量训练实战
PaddleNLP 解语 ERNIE-CTM:面向中文文本挖掘的预训练模型与 WordTag 增量训练实战

人工智能大模型预训练微调LoRARLHF强化学习分布式训练 【免费下载链接】PaddleNLP Easy-to-use and powerful LLM and SLM library with awesome model zoo. 项目地址: https://gitcode.com/gh_mirrors/pa/PaddleNLP 点击查看 免费下载 导读:ERNIE-CTM&… · 2026/9/25 12:18:41

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码