在 eBay,我们希望我们的客户获得尽可能最好的体验。我们使用数据分析来改善用户体验、提供相关优惠、优化性能并创造许多其他类型的价值。 eBay 支持此 va 的一种方式
在 eBay,我们希望我们的客户获得尽可能最好的体验。我们使用数据分析来改善用户体验、提供相关优惠、优化性能并创造许多其他类型的价值。 eBay 支持这种价值创造的一种方式是利用支持、加速或简化数据分析的数据处理框架。 Apache Spark 就是这样的框架之一。这篇文章介绍了 Apache Spark 如何融入 eBay 的分析数据基础设施。
什么是 Apache Spark?
Apache Spark 网站?将 Spark 描述为“用于大规模数据处理的快速通用引擎”。 Spark 是一个支持并行、分布式数据处理的框架。它提供了一个简单的编程抽象,提供了强大的缓存和持久性功能。 Spark 框架可以通过 Apache Mesos、通过 Yarn 的 Apache Hadoop 或 Spark 自己的集群管理器进行部署。开发人员可以通过多种编程语言(包括 Java、Scala 和 Python)使用 Spark 框架。 Spark 还可以作为其他数据处理框架的基础,例如 Shark,它为 Hadoop 提供 SQL 功能。
Spark 是用于迭代处理大型数据集的优秀工具。 Spark 适合此类处理的一种方式是通过其弹性分布式数据集 (RDD)。在题为“弹性分布式数据集:内存集群计算的容错抽象”的论文中,RDD 被描述为“……容错的并行数据结构,让用户可以将中间结果显式地保存在内存中,控制其分区以优化数据放置” ,并使用一组丰富的运算符来操纵它们。”通过使用 RDD,程序员可以将大型数据集固定到内存中,从而支持高性能的迭代处理。与每次处理迭代从磁盘读取大型数据集相比,内存解决方案显然要快得多。
下图显示了一个简单的示例,使用 Spark 从 HDFS 读取输入数据,使用 RDD 对该数据执行一系列迭代操作,并将后续输出写回 HDFS。
在第一次映射到 RDD(1) 的情况下,并非所有数据都能容纳在 RDD 允许的内存空间内。在这种情况下,程序员能够指定如何处理不适合的数据。这些选项包括将计算的数据溢出到磁盘并在读取时重新创建它。我们可以在这个示例中看到每个处理迭代如何利用内存来读取和写入其数据。这种利用内存的方法可能比其他纯粹依赖磁盘存储来获得间歇性结果的方法快 100 倍。
eBay 上的 Apache Spark
如今,Spark 在 eBay 上最常通过 Hadoop 和 Yarn 来使用。 Yarn 管理 Hadoop 集群的资源,并通过使用 Yarn 容器运行通用任务,使 Hadoop 能够超越传统的 Map 和 Reduce 作业。通过 Hadoop Yarn 框架,eBay 的 Spark 用户能够利用接近 2000 个节点、100TB RAM 和 20,000 个核心的集群。
以下示例通过 Yarn 演示了 Hadoop 上的 Spark。
用户将 Spark 作业提交到 Hadoop。 Spark 应用程序主机在单个 Yarn 容器中启动,然后开始与 Yarn 资源管理器一起生成 Spark 执行器 - 根据用户请求的数量。这些 Spark 执行器将使用指定的内存量和 CPU 核心数来运行 Spark 应用程序。在这种情况下,Spark 应用程序能够读取和写入驻留在 HDFS 中的集群数据。这种在 Hadoop 上运行 Spark 的模型说明了 Hadoop 不断增强的能力,即为共享数据上的数据处理提供单一的基础平台。
eBay 分析师社区包括强大的 Scala 用户队伍。因此,许多 eBay 的 Spark 用户都在用 Scala 编写工作。这些工作通过查询复杂数据、数据建模和数据评分等用例来支持发现。下面是 Spark Scala 应用程序的代码片段。该应用程序使用 Spark 的机器学习库 MLlib,通过 KMeans 对 eBay 的卖家进行集群。卖家属性数据存储在HDFS中。
/** * read input files and turn into usable records */ var table = new SellerMetric() val model_data = sc.sequenceFile[Text,Text]( input_path ,classOf[Text] ,classOf[Text] ,num_tasks.toInt ).map( v => parseRecord(v._2,table) ).filter( v => v != null ).cache .... /** * build training data set from sample and summary data */ val train_data = sample_data.map( v => Array.tabulate[Double](field_cnt)( i => zscore(v._2(i),sample_mean(i),sample_stddev(i)) ) ).cache /** * train the model */ val model = KMeans.train(train_data,CLUSTERS,ITERATIONS) /** * score the data */ val results = grouped_model_data.map( v => ( v._1 ,model.predict( Array.tabulate[Double](field_cnt)( i => zscore(v._2(i),sample_mean(i),sample_stddev(i)) ) ) ) ) results.saveAsTextFile(output_path) |
除了 Spark Scala 用户之外,eBay 的一些人也开始使用 Spark 和 Shark 来加速他们的 Hadoop SQL 性能。许多 Shark 查询的运行速度比 Hive 查询快 5 倍。虽然 eBay 的 Spark 仍处于早期阶段,但随着 eBay 的 Spark 用户数量不断增加,其使用量正在从实验性扩展到日常使用。
eBay Spark 的未来
Spark 正在帮助 eBay 从其数据中创造价值,因此 Spark 在 eBay 的未来是光明的。我们的 Hadoop 平台团队已开始准备正式支持 Hadoop 上的 Spark。此外,我们还密切关注 Hadoop 如何继续发展对 Spark 等框架的支持、社区如何使用 Spark 从数据中创造价值,以及 Hortonworks 和 Cloudera 等公司如何将 Spark 纳入其产品组合。 eBay 内的一些团队正在考虑在 Hadoop 之外构建自己的 Spark 集群。这些集群要么利用更专业的硬件,要么是特定于应用程序的。其他人正在致力于将 eBay 已经强大的数据平台语言扩展合并到 Spark 模型中,以便更轻松地在 Spark 中利用 eBay 的数据。与此同时,我们将继续看到 eBay 上 Spark 的采用率不断增加。这种采用将由大厅中的聊天、时事通讯简介、产品公告、行业讨论以及 Spark 自身的优势和能力来推动。
原文地址:使用 Spark 点燃数据分析,感谢原作者分享。

MySQL适合初学者学习数据库技能。1.安装MySQL服务器和客户端工具。2.理解基本SQL查询,如SELECT。3.掌握数据操作:创建表、插入、更新、删除数据。4.学习高级技巧:子查询和窗口函数。5.调试和优化:检查语法、使用索引、避免SELECT*,并使用LIMIT。

MySQL通过表结构和SQL查询高效管理结构化数据,并通过外键实现表间关系。1.创建表时定义数据格式和类型。2.使用外键建立表间关系。3.通过索引和查询优化提高性能。4.定期备份和监控数据库确保数据安全和性能优化。

MySQL是一个开源的关系型数据库管理系统,广泛应用于Web开发。它的关键特性包括:1.支持多种存储引擎,如InnoDB和MyISAM,适用于不同场景;2.提供主从复制功能,利于负载均衡和数据备份;3.通过查询优化和索引使用提高查询效率。

SQL用于与MySQL数据库交互,实现数据的增、删、改、查及数据库设计。1)SQL通过SELECT、INSERT、UPDATE、DELETE语句进行数据操作;2)使用CREATE、ALTER、DROP语句进行数据库设计和管理;3)复杂查询和数据分析通过SQL实现,提升业务决策效率。

MySQL的基本操作包括创建数据库、表格,及使用SQL进行数据的CRUD操作。1.创建数据库:CREATEDATABASEmy_first_db;2.创建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入数据:INSERTINTObooks(title,author,published_year)VA

MySQL在Web应用中的主要作用是存储和管理数据。1.MySQL高效处理用户信息、产品目录和交易记录等数据。2.通过SQL查询,开发者能从数据库提取信息生成动态内容。3.MySQL基于客户端-服务器模型工作,确保查询速度可接受。

构建MySQL数据库的步骤包括:1.创建数据库和表,2.插入数据,3.进行查询。首先,使用CREATEDATABASE和CREATETABLE语句创建数据库和表,然后用INSERTINTO语句插入数据,最后用SELECT语句查询数据。

MySQL适合初学者,因为它易用且功能强大。1.MySQL是关系型数据库,使用SQL进行CRUD操作。2.安装简单,需配置root用户密码。3.使用INSERT、UPDATE、DELETE、SELECT进行数据操作。4.复杂查询可使用ORDERBY、WHERE和JOIN。5.调试需检查语法,使用EXPLAIN分析查询。6.优化建议包括使用索引、选择合适数据类型和良好编程习惯。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

Dreamweaver Mac版
视觉化网页开发工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。