使用 Spark 激发数据分析
在 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 点燃数据分析,感谢原作者分享。

热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

今年ChatGPT火了半年多,热度丝毫没有降下来。深度学习和NLP也重新回到了大家的视线中。公司里有一些小伙伴都在问我,作为一名Java开发人员,如何入门人工智能,是时候拿出压箱底的私藏的学习AI的Java库来介绍给大家。这些库和框架为机器学习、深度学习、自然语言处理等提供了广泛的工具和算法。根据AI项目的具体需求,可以选择最合适的库或框架,并开始尝试使用不同的算法来构建AI解决方案。1.Deeplearning4j它是一个用于Java和Scala的开源分布式深度学习库。Deeplearning

随着大数据时代的到来,数据处理变得越来越重要。对于各种不同的数据处理任务,不同的技术也应运而生。其中,Spark作为一种适用于大规模数据处理的技术,已经被广泛地应用于各个领域。此外,Go语言作为一种高效的编程语言,也在近年来得到了越来越多的关注。在本文中,我们将探讨如何在Go语言中使用Spark实现高效的数据处理。我们将首先介绍Spark的一些基本概念和原理

Java大数据技术栈:了解Java在大数据领域的应用,如Hadoop、Spark、Kafka等随着数据量不断增加,大数据技术成为了当今互联网时代的热门话题。在大数据领域,我们常常听到Hadoop、Spark、Kafka等技术的名字。这些技术起到了至关重要的作用,而Java作为一门广泛应用的编程语言,也在大数据领域发挥着巨大的作用。本文将重点介绍Java在大

PHP是一种非常流行的服务器端编程语言,因为它简单易学、开放源代码和跨平台。目前,很多大企业都采用PHP语言来构建应用程序,例如Facebook和WordPress等。Spark是一种快速且轻量级的开发框架,可用于构建Web应用程序。它基于Java虚拟机(JVM)并且与PHP结合使用。本文将介绍如何使用PHP和Spark构建Web应用程序。什么是PHP?PH

data文件夹里面是系统及程序的数据,比如软件的设置和安装包等,Data文件夹中各个文件夹则代表的是不同类型的数据存放文件夹,无论Data文件指的是文件名Data还是扩展名data,都是系统或程序自定义的数据文件,Data是数据保存的备份类文件,一般可以用meidaplayer、记事本或word打开。

随着数据量的不断增加,大规模数据处理已经成为了企业必须面对和解决的问题。传统的关系型数据库已经无法满足这种需求,而对于大规模数据的存储和分析,Hadoop、Spark、Flink等分布式计算平台成为了最佳选择。在数据处理工具的选择过程中,PHP作为一种易于开发和维护的语言,越来越受到开发者的欢迎。在本文中,我们将探讨如何利用PHP来实现大规模数据处理,以及如

mysql load data乱码的解决办法:1、找到出现乱码的SQL语句;2、修改语句为“LOAD DATA LOCAL INFILE "employee.txt" INTO TABLE EMPLOYEE character set utf8;”即可。

在当前的互联网时代,海量数据的处理是各个企业和机构都需要面对的问题。作为一种广泛应用的编程语言,PHP同样需要在数据处理方面跟上时代的步伐。为了更加高效地处理海量数据,PHP开发引入了一些大数据处理工具,如Spark和Hadoop等。Spark是一款开源的数据处理引擎,可以用于大型数据集的分布式处理。Spark的最大特点是具有快速的数据处理速度和高效的数据存
