云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

专属服务器_阿里巴巴云医师_超低折扣

小七 141 0

利用apachespark在阿里巴巴淘宝上挖掘电子商务图形数据

这是我们阿里巴巴淘宝网朋友的一篇博客文章。阿里巴巴淘宝网运营着全球最大的电子商务平台之一。我们在这个平台上收集了数百PB的数据,并使用ApacheSpark来分析这些巨大的数据量。阿里巴巴淘宝网可能经营着世界上最大的Spark工作。例如,一些Spark作业运行数周来对数PB的图像数据执行特征提取。在这篇博文中,我们分享了我们在阿里巴巴淘宝数据挖掘团队中,从原型到生产的Spark和GraphX的经验。每天,数以亿计的用户和商家在阿里巴巴淘宝商城上互动。这些相互作用可以用复杂的、大规模的图形来表示。挖掘数据需要一个分布式数据处理引擎,它可以支持快速交互查询以及复杂的算法。Spark和GraphX嵌入了一套标准的图形挖掘算法,包括PageRank、三角形计数、连接组件、最短路径。这些算法的实现侧重于可重用性。用户可以实现这些算法的变体,以便利用针对特定工作负载的性能优化机会。根据我们的经验,学习GraphX的最好方法是阅读并理解这些算法的源代码。阿里巴巴淘宝开始在Apache Spark 0.9中使用GraphX进行原型开发,并在2014年5月Apache Spark 1.0发布前后投入生产。需要注意的是GraphX仍在快速发展。尽管面向用户的api相对稳定,但从0.8到1.0的内部结构已经进行了相当大的重构和改进。根据我们的经验,即使不修改我们的应用程序代码,每一次小版本升级都能提高10-20%的性能。图形检测平台基于图的结构为我们的用户和商店中的商品之间的许多关系建模。我们的业务和产品团队经常需要根据每种关系的价值和健康状况做出决策。在Spark之前,他们用自己的直觉来估计这些属性,结果做出的决策与实际不符。为了解决这个问题,我们开发了一个平台来科学地量化所有这些指标,以便为产品决策提供证据和见解。这个平台需要根据产品需求不断地重复它提供给用户的一组度量。Spark和GraphX的交互特性在构建这个平台方面非常有价值。该平台衡量的一些指标包括:度分布:度分布测量顶点度数的分布(例如有多少用户有50个朋友)。它还提供了关于高阶顶点(所谓的超级顶点)数量的有价值的信息。通常,我们的下游产品基础设施需要以一种特殊的方式容纳超级顶点(因为它们对传播算法有很大的影响),因此了解它们在数据中的分布是至关重要的。GraphX的VertexRDD为in degrees和out degrees提供内置支持。二级邻居:建模社会关系通常需要测量二级邻居分布。例如,在我们开发的一个即时通讯平台中,"转发"的数量与二级邻居的数量(例如朋友的朋友数量)相关。虽然GraphX还没有为计算二次邻居提供内置支持,但是我们使用两轮传播来实现它:第一轮传播每个顶点的ID到它的邻居,第二轮将所有ID从邻居传播到二次邻居。在两轮传播之后,每个顶点使用一个散列集计算二阶邻居的数目。在这个计算中需要注意的一点是,我们使用前面提到的度分布来从二次邻居计算中移除超级顶点。否则,这些超级顶点将创建过多的消息,导致高计算偏差和高内存使用率。连通分量:连通分量是指一组"连通"的子图,即子图中存在一条连接任意一对顶点的路径。连接组件在将一个大的图分成多个更小的图,然后进行计算开销太大而无法在大型图上运行的操作时,它非常有用。该算法也适用于发现紧密连接的网络。我们正在使用Spark和GraphX提供的内置函数以及内部实现的新函数来开发更多的度量。这个平台培育了一种新的文化,使我们的产品决策不再基于本能和直觉,而是基于从数据中挖掘出来的指标。多图合并图形检查平台为我们提供了不同的属性来建模关系。每一种关系结构都有自己的优点和缺点。例如,某些关系结构在连接的组件中提供了更有价值的信息,而另一个关系结构可能更适合于交互。我们通常根据同一个底层图的多个不同属性和结构表示进行决策。基于GraphX,我们开发了一个多图合并框架,它可以创建多个图的"交集"。附图说明了合并图A和图B来创建图C的算法:如果图A或图B中存在任何顶点,则在图C中创建边。这个合并框架是使用GraphX提供的outerJoinVertices操作符实现的。除了天真地合并两个图之外,框架还可以为输入图分配不同的权重。在实际应用中,我们的分析管道经常以多种方式合并多个图形,并在图形检查平台上运行。信仰传播加权信念传播是一种经典的图形数据建模方法,常用于预测用户的影响力或可信度。直觉很简单:高信用度用户通常与其他高信用度用户交互,而低信用度用户通常与其他低信用度用户交互。虽然算法很简单,但历史上我们并没有尝试在我们的整个图上运行这些算法,因为要将其扩展到数亿用户和数十亿次交互的计算成本。使用GraphX,我们能够将这个分析扩展到我们所拥有的整个图。算法的每次运行需要3次迭代,每次迭代需要在GraphX的pregelapi中进行8次迭代。经过30次Pregel迭代,AUC(曲线下面积)从0.6增加到0.9,这是一个非常令人满意的预测率。虽然我们还处于GraphX开发的早期阶段,但今天我们已经能够通过图形建模和分析产生令人印象深刻的见解,如果没有GraphX,在我们的规模下很难实现。我们计划丰富和进一步发展我们的各种平台和框架,包括更广泛的指标,并将其应用于标签/主题推断、人口统计推断、交易预测,从而提高我们各种推荐系统的有效性。作者andyhuang领导淘宝的数据挖掘团队。他是Spark的早期采用者,从Spark 0.5开始就开始使用它。吴伟是淘宝数据挖掘团队的工程师。他的兴趣涉及分布式系统、大规模机器学习和数据挖掘。这篇客座博客文章是CSDN程序员杂志发表的一篇文章的部分翻译。免费试用Databricks。今天就开始吧