挖掘网站数据价值——大规模离线数据的分析处理应用

作者:baiyuzhong,发布于2012-2-29


为什么我们使用搜索引擎时,不同的用户搜索同样的关键词看到的广告却不同?为什么我们到电子商务网站购物时,每次浏览同样的商品时都可以得到不同的商品推荐?作为网站服务的开发者,你有没有想过,你所拥有的数据蕴含着怎样的价值?当你准备对自己的网站数据进行深入分析时,是否曾面对着成百上千的数据不知如何下手?

如果上面的问题会让你连连点头,那么请跟随我们,展开一段数据分析之旅。希望沿途的见闻,会让你在下次进行数据挖掘操作时,更加得心应手。

借用一下本刊前面的一篇文章——《借助OTS快速构建LBS服务》中的故事。假设你利用OTS构建了一个很不错的LBS网站,公司业务蒸蒸日上,积累了大量的活跃用户,还拥有了北京地区大部分餐馆的物理信息和用户评价信息;如果你的广告业务也发展得很好,说不定你的公司已经收支平衡,并且小有盈余。可以说,这时的你已不满足于仅仅为用户提供餐馆信息,而且希望能够利用你拥有的数据为客户创造更大的价值。

对了,在开始前,我们也要介绍一下本次旅行的交通工具:阿里云开放数据处理服务(Open Data Processing Service,简称ODPS)。ODPS是构建在大规模分布式计算系统上的海量数据处理服务,以REST API的形式支持描述性查询语言SQL的数据处理,适用于海量数据统计、数据模型、数据挖掘、数据商业智能等诸多互联网应用。

一个简单的数据分析示例

你拥有的数据可以支持很多复杂精彩的分析任务,我们从最简单的一个开始:希望利用所有用户的点评数据计算餐馆的综合评分,进而统计“北京最受欢迎的十大餐馆”。由于这个榜单相对固定,我们可以每天重新计算一次,看是否有黑马杀入。

如果你的业务发展得比上文描述的还要好,那么你此刻可能会有点烦恼了:假设你已有8000万用户,按10%的活跃用户平均每人30条点评,其他90%的用户平均每人2条点评计算,用户点评数据约有4亿条;如果每条点评信息平均0.5KB,那么点评数据总计有200GB。利用传统数据库来完成数据分析会显得力不从心;而大数据处理的商业解决方案极为昂贵,开源的解决方案又需要非常专业的开发和运维知识。在这种场景下,就要靠ODPS大显身手了。

第一个数据分析的SQL

表1 RestaurantInfo表存储餐馆的数据

让我们回顾一下你的原始数据,它们都已经存储在OTS的表格中了(为了ODPS的计算需要,表的schema略有修改),如表1和表2所示。

表2 RestaurantComment表存储用户对餐馆的评价数据

为了使用ODPS服务,你还需要到ODPS的管理中心申请数据存储所需的存储空间、数据分析所需的计算资源、用于确保数据和计算安全的AccessID和AccessKey【注:ODPS使用这一加密对来保证开发者的数据、作业和工作流不能被别人访问,因此开发者需要小心保管AccessId和AccessKey,不要对任何人泄露】的安全加密对,以及开发所需的SDK安装包(什么,你还没有注册?别担心,阿里云支持统一用户登录,你在使用OTS时已经注册过,此时仅仅需要开通ODPS服务就可以了)。

在ODPS的SDK安装包中,提供了一个命令行工具odpscmd【注:随ODPS SDK一同发布的命令行操作工具,其安装过程参见http://odps.aliyun.com】。odpscmd封装了ODPS的REST API,支持ODPS服务的绝大部分功能,可以帮助你尽快了解并熟悉ODPS的常用操作。SQL的构造流程分为以下五步。

用odpscmd来配置一下你的安全加密对(odpscmd要求所有命令以“;”结尾):

$ odpscmd SET ACCESSID=AccessID ACCEESSKEY=AccessKey;

将OTS中的两张表的schema和数据复制到ODPS中(以下以大写字母表示关键字,斜体字母表示用户自定义标识符;odpscmd对所有关键词和标识符不区分大小写):

$ odpscmd CREATE TABLE RestaurantInfo AS SELECT * FROM OTS.RestaurantInfo;

$ odpscmd CREATE TABLE RestaurantComment AS SELECT * FROM OTS.RestaurantComment;

在HangMode【注:odpscmd处理SQL命令的一种模式,与NoneHangMode相对】模式下,odpscmd会同步串行处理提交的一系列SQL命令,直到最后一个SQL命令结束,结果表数据生成后才会返回。根据表中的数据量多少和运算的复杂性,等待时间可能会是几秒钟到几个小时不等。当OTS中的源表数据量很大、数据被分片保存时,ODPS服务会启动多个任务并发读取OTS中的数据,以缩短数据复制时间。存储在ODPS中的数据也会分片保存,以便后续的数据分析操作可以快速地读取数据。

你还需要在ODPS中创建一张新表TopTenRestaurants,存储十大餐馆的统计信息,如表3所示。

表3 TopTenRestaurants表存储十大餐馆的统计数据

建表命令为:

$ odpscmd CREATE TABLE IF NOT EXISTS TopTenRestauransts (DistrictID INT, RestaurantID INT, Name STRING, Address STRING, PhonenNmber STRING, Location STRING, Category STRING, ScoreStat INT, CostStat INT);

我们将用户对每个餐馆评分的平均值定义为该餐馆的口碑,取评分最高的前十名餐馆作为“北京最受欢迎的十大餐馆”。构造相应的SQL语句后,在odpscmd中提交:

$ odpscmd INSERT OVERWRITE TABLE TopTenRestaurants SELECT a.DistrictID, a.RestaurantID, a.Name, a.Address, a.PhoneNumber, a.Location, a.Category, b.ScoreStat, b.CostStat FROM RestaurantInfo a JOIN (SELECT DistrictID, RestaurantID, AVG(Score) AS ScoreStat, AVG(Cost) AS CostStat FROM RestaurantComment GROUP BY DistrictID, RestaurantID) b ON a.DistrictID = b. DistrictID AND a.RestaurantID = b.RestaurantID ORDER BY b.ScoreStat DESC LIMIT 10;

SQL语句运算完成后,我们可以查阅表中的结果数据:

$ odpscmd READ TABLE TopTenRestaurants;

在ODPS中计算的结果数据需要被外部应用访问,我们可以借助于OTS的实时查询功能。假设在OTS中利用相同的schema也创建了TopTenRestaurants表,你可以通过下面的命令将ODPS的数据推送到OTS中:

$ odpscmd EXPORT DATA TO OTS TopTenRestaurants FROM TABLE TopTenRestaurants;

自动定期分析

至此,我们已完成一次数据分析操作:从OTS导入原始数据到ODPS中,进行数据分析操作,再将结果数据导出到OTS供查询。但这个过程是手工完成的,如果希望“十大餐馆”的数据每天更新一次,那么有没有什么办法可以自动完成上面的操作呢?

我们将上面的流程整理一下,形成一个SQL命令脚本,保存到CalTopTenRestaurants.sql中:

DROP TABLE RestaurantInfo;

DROP TABLE RestaurantComment;

CREATE TABLE RestaurantInfo AS SELECT * FROM OTS.RestaurantInfo;

CREATE TABLE RestaurantComment AS SELECT * FROM OTS.RestaurantComment;

CREATE TABLE IF NOT EXISTS TopTenRestaurants (DistrictID INT, RestaurantID INT, Name STRING, Address STRING, PhoneNumber STRING, Location STRING, Category STRING, ScoreStat INT, CostStat INT);

INSERT OVERWRITE TABLE TopTenRestaurants SELECT a.DistrictID, a.RestaurantID, a.Name, a.Address, a.PhoneNumber, a.Location, a.Category, b.ScoreStat, b.CostStat FROM RestaurantInfo a JOIN (SELECT DistrictID, RestaurantID, AVG(Score) AS ScoreStat, AVG(Cost) AS CostStat FROM RestaurantComment GROUP BY DistrictID, RestaurantID) b ON a.DistrictID = b. DistrictID AND a.RestaurantID = b.RestaurantID ORDER BY b.ScoreStat DESC LIMIT 10;

EXPORT DATA TO OTS TopTenRestaurants FROM TABLE TopTenRestaurants;

为了定期执行上面的SQL命令脚本,我们在ODPS中创建一个作业(QUERY)【注:由用户定义的一系列串行执行的SQL命令,保存在ODPS中,用来对ODPS中的表完成某个特定的数据分析操作】:

$ odpscmd CREATE QUERY CalTopTenRestaurants FROM

./CalTopTenRestaurants.sql;

CalTopTenRestaurants这个作业包含了计算“十大餐馆”的全部数据分析操作,我们需要这个作业每天运行一次,在odpscmd中进行如下设置:

$ odpscmd SET QUERY CalTopTenRestaurants EXECTIME=00:00:00 EVERY DAY;

好了,现在这个作业会从设置的第二天零点开始,每天执行一次。你的前端应用程序可以直接在OTS中访问结果表数据,ODPS会在后台自动完成作业的运行和监控,并会在出现问题时,通过ODPS管理中心向你发出警报。你可以随时查询这个作业的状态,了解它的上次运行时间、总运行次数等信息。

$ odpscmd DESCRIBE QUERY TopTenRestaurants;

构造复杂的数据挖掘任务

利用上面的流程,你可以完成很多简单的数据分析操作,让你的网站能够为客户提供更丰富的服务;但你的数据蕴含的价值远不止如此。下面再来试个稍微复杂一点的例子:你的用户在网站上发表的点评暗示了他/她的消费轨迹和偏好,我们希望通过分析用户的点评数据,为他/她推荐喜爱的餐馆。

首先需要做点准备工作。在《借助OTS快速构建LBS服务》一文中没有提及用户信息如何保存,由于后续的计算需要用到用户数据,不妨假设你的用户信息都存放在表4中。

然后我们来分析如何向用户推荐他/她喜欢的餐馆。

首先将OTS中的原始数据表导入到ODPS中。

DROP TABLE RestaurantInfo; #(1)

CREATE TABLE RestaurantInfo AS SELECT * FROM OTS.RestaurantInfo; #(2)

DROP TABLE RestaurantComment; #(3)

CREATE TABLE RestaurantComment AS SELECT * FROM OTS.RestaurantComment; #(4)

DROP TABLE UserInfo; #(5)

CREATE TABLE UserInfo AS SELECT * FROM OTS.UserInfo; #(6)

在上一节中计算的结果依然有用:首先得到所有餐馆的用户口碑,接下来可以计算每类餐馆中口碑最好的一家。

DROP TABLE RestaurantStat; #(7)

CREATE TABLE RestaurantStat AS SELECT a.DistrictID, a.RestaurantID, a.Name, a.Address, a.PhoneNumber, a.Location, a.Category, b.ScoreStat, b.CostStat FROM RestaurantInfo a JOIN (SELECT DistrictID, RestaurantID, AVG(Score) AS ScoreStat, AVG(Cost) AS CostStat FROM RestaurantComment GROUP BY DistrictID, RestaurantID) b ON a.DistrictID = b. DistrictID AND a.RestaurantID = b.RestaurantID; #(8)

DROP TABLE BestRestaurantInCategory; #(9)

CREATE TABLE BestRestaurantInCategory AS SELECT Category, DistrictID, RestaurantID, Name, Address, PhoneNumber, Location, MAX(ScoreStat) AS BestScoreStat, CostStat FROM RestaurantStat GROUP BY Category; #(10)

找到每个用户最后发表点评的餐馆,假设他/她刚刚去过那家餐馆,并且比较喜欢那个餐馆所在类别的餐馆;计算这些餐厅所属的类别。

DROP TABLE UserLatestCategory; #(11)CREATE TABLE UserLatestCategory AS SELECT a.UserName, b.Category FROM (SELECT DistrictID, RestaurantID, MAX(DateTime) AS LatestDateTime, UserName FROM RestaurantComment GROUP BY UserName) a JOIN RestaurantInfo b ON a.DistrictID = b.DistrictID AND a.RestaurantID = b.RestaurantID; #(12)

向用户推荐由#3得到的那类餐馆中口碑最好的一家。

#计算为每位用户推荐的餐厅

DROP TABLE UserRecommandedRestaurant; #(13)

CREATE TABLE UserRecommandedRestaurant AS SELECT a.UserId, a.UserName, b.Category, c.Name, c.Address, c.PhoneNumber, c.Location, c.BestScoreStat, c.CostStat FROM UserInfo a LEFT OUTER JOIN UserLatestCategory b ON a.UserName = b.UserName LEFT OUTER JOIN BestRestaurantInCategory c ON b.Category = c.Category; #(14)

将结果表中的数据导出到OTS中供网站应用访问。

EXPORT DATA TO OTS UserRecommandedRestaurant FROM TABLE UserRecommandedRestaurant; #(15)

我们可以将上述SQL命令保存为一个作业,提交给ODPS服务执行。但这样一个作业中的所有SQL命令是顺序执行的,对于RestaurantComment和UserInfo这类含有千万甚至亿条数据的表而言,执行GROUP BY和MULTI-JOIN操作需要花费大量时间。如果数据模型的复杂度提升,时间还会进一步增加,难以满足数据分析对时效性的要求。有什么好办法吗?通过观察不难发现,上述15个SQL语句之间是有依赖关系的,其依赖关系可以构成一张有向无环图,如图1所示。每个节点的编号与SQL语句后面的编号一一对应。

图1 计算向用户推荐的餐馆的SQL语句的依赖关系

ODPS支持按作业的依赖关系并发调度作业,因此,我们根据这15个SQL语句的依赖关系将它们整理成如下作业(冒号前面是作业名称,冒号后面是该作业包含的SQL语句,此处省略了在odpscmd中定义作业的命令):

QUERY GenRestaurantInfo: 1, 2

QUERY GenRestaurantComment: 3, 4

QUERY GenUserInfo: 5, 6

QUERY CalBestRestaurantInCategory: 7, 8, 9, 10

QUERY CalUserLatestCategory: 11, 12

QUERY CalUserRecommandedRestaurant: 13, 14

QUERY Finish: 15

定义好作业后,我们可以在ODPS中定义一个工作流 【注:由用户定义的作业集合,集合中的作业满足特定的执行依赖关系。利用ODPS的并发调度功能,使用工作流可以更高效地执行多个作业】。这个工作流包括上述全部作业以及它们之间的依赖关系,通过执行这个工作流,可以完成向用户推荐餐馆的全部数据分析操作。

$ odpscmd CREATE WORKFLOW CalUserRecommandedRestaurant { GenRestaurantInfo -> CalBestRestaurantInCategory, GenRestaurantInfo -> CalUserLatestCategory, GenRestaurantComment -> CalBestRestaurantInCategory, GenRestaurantComment -> CalUserLatestCategory, CalBestRestaurantInCategory -> CalUserRecommandedRestaurant, CalUserLatestCategory -> CalUserRecommandedRestaurant, GenUserInfo -> CalUserRecommandedRestaurant, CalUserRecommandedRestaurant};

工作流CalUserRecommandedRestaurant定义的作业之间的依赖关系如图2所示。

图2 计算向用户推荐餐馆的作业的依赖关系

定义好工作流之后,就可以像执行作业一样执行它了。我们现在就来计算为每个用户推荐的最喜欢的餐厅,并将结果表导出到OTS。或者,你也可以为该工作流定义执行计划,这需要综合考虑用户的登录频率和该工作流的执行时间。

$ odpscmd EXEC WORKFLOW UserRecommandedRestaurant;

后记

ODPS拥有出色的数据离线处理能力,并提供了丰富的命令让用户可以灵活地管理海量数据和多个并发计算作业,以帮助用户快速构建复杂的数据分析和数据挖掘应用。借助于数据分片存储和分片计算等分布式数据处理技术,ODPS可以游刃有余地处理TB甚至PB级别的数据分析任务。除了提供丰富的数据导入/导出命令外,ODPS还与阿里云的其他服务进行了深度集成,允许用户轻松地将在其他服务中沉淀的数据导入到ODPS中进行分析和处理,并回流到原服务中供其他应用访问。

拥有出色的处理能力仅仅是ODPS的冰山一角,未来我们将会把业务伙伴在ODPS上沉淀的数据开放出来,供更多的组织机构使用,让ODPS成为一个数据分享和数据分析的开放式服务平台,同时满足数据生产者、加工者和消费者等多方面的需求。
1 用户行为分析 常见问题 项目会涉及到哪些技术? Nginx HDFS Flume MapReduce Scala Spark 可视化展示 需要会哪些编程语言? 具备Java基本知识 具备Html基本知识 Scala?会Step by Step讲解 需要提前做哪些准备? 准备Linux运行环境 搭建CDH集群 项目背景 用户行为分析需要分析哪些内容? 你是谁? 你从哪里来 免费流... 阅读详情

相关推荐

互联网日志分析技术及分析指标

日志分析必要性 日志格式 传统单机日志数据分析 大规模分布式日志分析 日志分析指标 网站运营日志分析常用指标 PV Page View UV Unique Visitor PVUV Page View Per User 漏斗模型与转化率 留存率 用户属性 终极目标使用界面展示

youchuikai的博客 4991

对实时分析与离线分析的思考

[size=medium] 数据的价值是有时效性的,越早分析越能得到更快的问题反馈或响应。Hadoop的设计初衷是存储与分析离线大数据,我认为它的缺点就是不能及时地利用数据中所蕴含的深层价值。 在做深入分析之前,我想从门外汉的角度来说说我自己理解的实时分析是什么样子的。它的目标很明确:尽快地从数据中挖掘出有用的内容来。这牵扯到把计算移动到哪个地方去的问题。数据源本地?数据传...

每天一小步 1589

云计算与大数据融合:构建精准营销平台的技术全解析

云计算的优势云计算提供按需、自助、可扩展的计算资源和存储空间,用户无需关心硬件设施的维护与管理,能够专注于应用开发和数据分析。弹性扩展:根据实际需求,自动增加或减少计算资源,降低资源浪费。低成本:企业只需为实际使用的资源付费,避免了昂贵的硬件和运维成本。高可用性:通过分布式架构实现高可用和灾难恢复。云计算与大数据的融合为精准营销平台的构建提供了技术保障,使得企业能够更高效地收集、存储、处理和分析客户数据,从而实现个性化营销、提高营销效果。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1547

【数据中台】六、数据开发:数据价值提炼工厂

六、数据开发:数据价值提炼工厂 数据开发是数据资产内容建设的主战场,是数据价值生产过程中的核心环节,可以支撑大批量数据的离线处理、实时处理和数据挖掘等。 数据开发设计的产品能力主要包括三个部分,分别是离线开发、实时开发和算法开发。 离线开发主要包括离线数据的加工、发布、运维管理,以及数据分析、数据探索、在线查询和即席分析相关的工作。 实时开发主要涉及数据的实时接入和实时处理,简化流数据的加工处理过程。 算法开发主要提供简单易用的可视化拖曳方式和Notebook方式来实现数据价值的深度挖掘。 不

xiexie1357的专栏 1063

阿里云-数据仓库-数据分析开发神器-ODPS

ODPS是阿里云自研的一体化大数据计算平台和数据仓库产品,为数字化转型提供多功能、低成本、高性能、稳定、安全、开放和易用的整套产品方案, 提供实时离线一体、流批一体、湖仓一体、大数据+AI一体的多场景能力。

fyydlz的博客 1万+

大数据和智能数据应用架构系列教程之:大数据概述与发展趋势

随着互联网的普及、信息化的发展、移动互联网的快速发展以及IT设备数量的扩大、云计算平台的发展,新一代的信息技术已经成为我们生活的中心。而在这个新时代,数据的产生、收集、存储、分析、挖掘和应用已经成为一种必然现象。那么,什么是大数据?如何对大数据进行分类、处理、分析以及运用?在大数据时代,如何让数据成为力量?因此,大数据和智能数据应用架构一直是企业关心的话题。本教程将通过系列案例详解大数据概述、主要概念、算法原理、操作步骤以及实际案例。希望能够帮您对“大数据”有更深入的了解,并有针对性地进行业务分析。

AI天才研究院 2123

大数据离线处理和常用工具

1. 大数据离线处理特点    1) 数据量巨大且保存时间长;    2) 在大量数据上进行复杂的批量运算;    3) 数据在计算之前已经完全到位,不会发生变化;    4) 能够方便的查询批量计算的结果;    不像在线计算当前呈现的各种框架和架构,离线处理目前技术上已经成熟,大家使用的均是:  使用 Hdfs  存储数据,使用 MapReduce  做批量计算,计算完成的数据如需数

MyArrow的专栏 1万+

Spark大数据处理案例:电商用户行为分析实战

在当今数据驱动的电商时代,理解用户行为已成为企业获取竞争优势的关键。本文将带你深入探索如何利用Apache Spark这一强大的大数据处理框架,构建完整的电商用户行为分析系统。我们将从实际业务需求出发,一步步揭示数据采集、处理、分析到应用的全过程,通过生动案例和代码实现,展示如何将亿万条用户行为数据转化为可执行的商业洞察。无论你是数据工程师、分析师还是产品经理,本文都将为你提供一套系统的电商用户行为分析方法论和实践指南,帮助你在大数据海洋中找到真正有价值的"藏宝图"。

AI开发架构师 935

毕业设计|基于Spark+Hive大数据技术的电商网站手机销量数据分析系统的设计与实现

本文设计了一个基于Spark+Hive的电商手机销量数据分析系统。系统通过Java爬虫采集电商平台手机数据,利用Spark进行数据清洗和处理,存储在Hive和MySQL中。基于SparkSQL和Hive实现多维分析,包括价格、销量与屏幕、内存、CPU等参数的关联分析。最后通过Flask+Echarts实现可视化展示,提供不同品牌销量、价格分布等8类图表,为手机厂商和电商平台提供数据支持。系统构建了从数据采集、处理、分析到可视化展示的完整解决方案,提升了电商数据分析的效率和深度。

鑫鑫源码工作室的博客 1852

Kettle入门指南:从安装到数据转换实战

本文提供Kettle(Pentaho Data Integration)的完整入门指南,涵盖从Java环境安装、软件配置到核心概念(转换与作业)的详细解析。通过实战案例,手把手教你如何将文本文件数据导出到Excel,并连接MySQL数据库进行数据导入,帮助你快速掌握这一强大ETL工具的基本使用,实现高效数据搬运与转换。

weixin_29266647的博客 448

群晖NAS变身私有Git服务器:DS218+部署与TortoiseGit客户端实战指南

本文详细介绍了如何将群晖NAS(如DS218+)变身为私有Git服务器,并配置TortoiseGit客户端实现高效代码管理。通过硬件检查、系统更新、Git Server套件安装及权限配置等步骤,帮助开发者在局域网内搭建安全、高速的代码托管环境,特别适合小团队协作。

weixin_29252171的博客 223

数据分析师干啥活儿

每天或者至少每周给业务线献计献策,用数据驱动公司发财?增长黑客,寄托于身,稍加挖掘,日活翻翻?数据一甩,指挥作战,产品运营研发老大,统统投以渴望期待的眼光?sql太low,更别说Office,必须上Python + R, 变着法子绘图, 画词云,非此不足以彰显NB独门绝技Python爬虫,数据从来都是爬爬爬?坑很多,建议还是了解下,实际厂里是怎么数据赋能业务的。楼上的,too simple, too naive.

m0_59236127的博客 94

从‘眼花缭乱’到‘心中有数’:rs-fMRI统计分析全流程避坑指南(附DPABI操作截图)

本文详细解析了rs-fMRI统计分析的全流程,从质量控制到统计模型选择,再到多重比较校正和结果解读。特别针对DPABI软件操作中的常见陷阱提供实用指南,帮助研究者避免FDR和GRF校正等关键环节的错误,实现从数据混乱到清晰分析的转变。

weixin_33686714的博客 397

一分钟了解阿里云产品:大数据计算服务MaxCompute概述

阿里云发布了许多产品,今天让我们来了解下大数据计算服务MaxCompute这款产品吧。     什么是MaxCompute呢?   MaxCompute是由阿里云自主研发,是阿里巴巴自主研发的海量数据处理平台。提供针对TB/PB级数据、实时性要求不高的分布式处理能力,应用于数据分析、挖掘、商业智能等领域。主要服务于批量结构化数据的存储和计算,可以提供海量数据仓库的解决方案以及针对大数据的

bengsa2291的博客 1895

1006. 换个格式输出整数 (15)-PAT乙级真题

1006. 换个格式输出整数 (15)让我们用字母B来表示“百”、字母S表示“十”,用“12…n”来表示个位数字n(<10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234,因为它有2个“百”、3个“十”、以及个位的4。输入格式:每个测试输入包含1个测试用例,给出正整数n(<1000)。输出格式:每个测试用例的输出占一行,用规定的格式输出n。输入样例1...

柳婼 の blog 2242

项目计划书、规划文档模板

项目计划书、规划文档模板 最近通过项目实践经历,整理出的一套项目计划书(仅供自己参考梳理思路使用) 有喜欢的文末加VX 辛苦码字如有转载请标明出处谢谢!——木研 更新的简版项目规划文档! 原版文件请+vx :baierfa ...

weixin_43194923的博客 987

基于Spark的新能源汽车销售数据可视化系统源码设计与文档

本课题针对新能源汽车销售数据 “规模大、维度多、分析滞后、决策难落地” 的问题,以 Spark 为大数据处理核心,结合可视化技术,构建 “数据采集 - 清洗处理 - 分析建模 - 可视化展示” 的销售数据可视化系统,解决企业 “数据利用浅、趋势难把握” 的痛点,为销售决策提供数据支撑。​ 系统采用 “Spark 大数据层 + Web 可视化层” 架构:数据层通过 Flume/Kafka 采集多源销售数据(车型、销量、区域、价格、用户画像、政策影响因素),存储至 HDFS;Spark Core 负责数据清洗(

博主自己就是程序员、避免中介对接,从事软件开发多年,累计开发或辅导多名同学, 有丰富的项目开发和文档编写经验、同学们有任何项目问题都可以联系我~ 907

QT5.14.2离线安装包保姆级教程:断网、选组件、避坑全记录

本文详细介绍了QT5.14.2离线安装包的完整流程,特别针对Windows平台开发者提供断网安装、组件选择及避坑指南。作为QT5系列中最后一个免费离线版本,5.14.2具有免注册、全组件离线安装等独特优势,是开源开发者的理想选择。文章涵盖从环境准备到安装后配置的全方位指导,帮助开发者高效完成安装并避免常见问题。

weixin_30924087的博客 577

大数据最全阿里云-数据仓库-数据分析开发神器-ODPS_odps数据库,2024年最新大数据开发攒了一个月的面试题及解答

ODPS的多层次数据存储和访问安全机制保护数据不丢失、不泄露、不被窃取。2、odps向用户提供了完善的数据导入方案以及多种经典的分布式计算模型,能够更快速的解决用户海量数据计算问题,有效降低企业成本,并保障数据安全。该技术已经在阿里巴巴集团内部得到大规模应用,例如:大型互联网企业的数据仓库和BI分析、网站的日志分析、电子商务网站的交易分析、用户特征和兴趣挖掘等。ODPS是阿里云自研的一体化大数据计算平台和数据仓库产品,为数字化转型提供多功能、低成本、高性能、稳定、安全、开放和易用的整套产品方案,

2401_84166327的博客 659

HAL STM32+EC11编码器实现增减调节及单击、双击、长按功能

HAL STM32+EC11编码器实现增减调节及单击、双击、长按功能

perseverance51博客 4232

COSMO-RS理论:流体相热力学预测的核心模型与技术突破

摘要:COSMO-RS模型通过量子化学计算分子表面电荷分布,实现了从微观量子尺度到宏观化工过程的热力学预测。该模型基于介电连续介质理论,将分子表面片段化处理,通过σ-剖面描述电荷分布,并计算片段间的静电失配能和氢键能。其核心算法通过自洽化学势方程求解活度系数,克服了传统模型依赖实验参数的局限。随着技术进步,模型引入了高阶描述符和色散力修正,提升了预测精度。在药物研发、化工分离等领域广泛应用,但仍存在对长程有序结构预测不足等局限性。该模型为复杂体系的热力学性质预测提供了重要理论工具。

ASKCOS博客 973

《凌云》第一期——追寻凌云梦

《凌云》是由阿里云打造的国内云计算期刊,它致力于给广大的读者带来关于云计算最热门、新潮的资讯和技术研究。在第一期中我们将了解如何定义以数据为中心的云计算。 访谈 追寻凌云梦 ——对话阿里云总裁王坚 架构 以数据为中心的云计算 ——阿里云OS浅谈 大规模云计算平台的技术挑战 云服务特别专题 阿里云服务综览 用API控制...

weixin_33896069的博客 153

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【开题答辩实录分享】以《宜家家居数据分析系统的设计与实现》为例进行答辩实录分享

该系统旨在通过大数据技术挖掘宜家家居业务数据的价值,为宜家提供数据驱动的决策支持,助力优化供应链、提升运营效率、应对市场变化。系统包含数据采集、数据清洗、数据存储、数据分析、数据可视化五大核心模块,技术栈方面采用 Django 作为后端框架,通过 Scrapy 实现数据抓取,利用 Pandas 进行数据预处理,依托 Hadoop 框架处理大规模数据,结合 TF-IDF 算法深化分析,数据库用于数据存储,最终通过可视化模块呈现分析结果。

2509_93102599的博客 592

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: 11招教你如何玩转数据库设计
下一篇: 海量数据处理面试题集锦与Bit-map详解
itfafa
博客等级 码龄15年 3粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值