草庐IT

hadoop - 过滤大数据集的最佳方式

coder 2024-01-07 原文

我有一个关于如何从大量金融交易数据中过滤相关记录的问题。我们使用 Oracle 11g 数据库,其中一项要求是生成具有各种标准的各种日终报告。

相关表格大致如下:

trade_metadata             18m rows, 10 GB
trade_economics            18m rows, 15 GB
business_event             18m rows, 11 GB
trade_business_event_link  18m rows, 3 GB

我们的一份报告现在需要很长时间才能运行(> 5 小时)。底层过程已经一次又一次地优化,但是新的标准不断被添加,所以我们又开始挣扎了。 proc 非常标准 - 连接所有表并应用大量 where 子句(最后计数为 20)。

我想知道我是否有足够大的问题来考虑大数据解决方案以摆脱这种每隔几个月优化查询的游戏。无论如何,销量只会上升。我已经阅读了一些有关 Hadoop + HBase、Cassandra、Apache Pig 等的内容,但作为这个领域的新手,我对继续进行的最佳方式有点困惑。

我想这不是 map-reduce 问题。 HBase 似乎确实提供了过滤器,但我不确定它们的性能。能否请各位大侠解答几个问题:

  1. 数据集是否足够大以支持大数据解决方案(我需要先进入十亿俱乐部吗?)
  2. 如果是,HBase 会是实现它的好选择吗?
  3. 尽管数量稳步增长,但我们不会很快放弃 Oracle。我是否正在考虑每天使用相关表中的转储来填充 HDFS?还是每天都可以进行增量写入?

非常感谢!

最佳答案

欢迎来到千变万化的大数据生态系统。如果您的数据集大小足够大,以至于对您使用传统工具进行分析的能力造成负担,那么它对于大数据技术来说就足够大了。您可能已经看到,有大量可用的大数据工具,其中许多工具具有重叠的功能。

首先,您没有提到是否有集群设置。如果没有,那么我建议通过 Cloudera 查看产品和 Hortonworks .这些公司提供的 Hadoop 发行版包括许多最流行的大数据工具(hbase、spark、sqoop 等),并且可以更轻松地配置和管理将构成集群的节点。两家公司都免费提供他们的发行版,但您必须支付支持费用。

接下来,您需要将数据从 Oracle 中取出并转换为 hadoop 集群中的某种格式以对其进行分析。通常用于从关系数据库获取数据并将其放入集群的工具是 Sqoop . Sqoop 能够将您的表加载到 HBase、Hive 和 Hadoop 分布式文件系统 (HDFS) 上的文件中。 Sqoop 还能够为更新执行增量导入,而不是加载整个表。您选择这些目的地中的哪一个会影响您在下一步中可以使用哪些工具。 HDFS 是最灵活的,因为您可以从 PIG、您编写的 MapReduce 代码、Hive、Cloudera Impala 等访问它。我发现 HBase 非常易于使用,但其他人强烈推荐 Hive。

旁白:有一个名为 Apache Spark 的项目有望替代 Hadoop MapReduce。与传统的 hadoop mapreduce 作业相比,Spark 声称速度提高了 100 倍。包括 Hive 在内的许多项目都将在 Spark 上运行,使您能够对大数据执行类似 SQL 的查询并快速获得结果 (Blog post)

现在您的数据已加载,您需要运行那些日终报告。如果你选择 Hive,那么你可以重用你的很多 sql 知识,而不是必须编写 Java 或学习 Pig Latin(并不是很难)。 Pig 将 Pig Latin 翻译成 MapReduce 作业(目前 Hive 的查询语言也是如此),但是,与 Hive 一样,Pig can target Spark以及。无论您为此步骤选择哪种工具,我都建议您查看 Oozie自动执行结果的摄取、分析和移出集群(为此使用 sqoop 导出)。 Oozie 允许您 schedule recurring workflows像您一样,这样您就可以专注于结果而不是过程。 Oozie 的全部功能都记录在案 here .

有大量的工具供您使用,这个生态系统的变化速度会让您倍受打击。 cloudera 和 Hortonworks 都提供了虚拟机,您可以使用它们来试用它们的发行版。我强烈建议花更少的时间深入研究每个工具,并尝试其中的一些工具(如 Hive、Pig、Oozie 等),看看哪种工具最适合您的应用程序)。

关于hadoop - 过滤大数据集的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26735476/

有关hadoop - 过滤大数据集的最佳方式的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 如何以所有可能的方式将字符串拆分为长度最多为 3 的连续子字符串? - 2

    我试图获取一个长度在1到10之间的字符串,并输出将字符串分解为大小为1、2或3的连续子字符串的所有可能方式。例如:输入:123456将整数分割成单个字符,然后继续查找组合。该代码将返回以下所有数组。[1,2,3,4,5,6][12,3,4,5,6][1,23,4,5,6][1,2,34,5,6][1,2,3,45,6][1,2,3,4,56][12,34,5,6][12,3,45,6][12,3,4,56][1,23,45,6][1,2,34,56][1,23,4,56][12,34,56][123,4,5,6][1,234,5,6][1,2,345,6][1,2,3,456][123

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  5. ruby-on-rails - 正确的 Rails 2.1 做事方式 - 2

    question的一些答案关于redirect_to让我想到了其他一些问题。基本上,我正在使用Rails2.1编写博客应用程序。我一直在尝试自己完成大部分工作(因为我对Rails有所了解),但在需要时会引用Internet上的教程和引用资料。我设法让一个简单的博客正常运行,然后我尝试添加评论。靠我自己,我设法让它进入了可以从script/console添加评论的阶段,但我无法让表单正常工作。我遵循的其中一个教程建议在帖子Controller中创建一个“评论”操作,以添加评论。我的问题是:这是“标准”方式吗?我的另一个问题的答案之一似乎暗示应该有一个CommentsController参

  6. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  7. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  8. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  9. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  10. FOHEART H1数据手套驱动Optitrack光学动捕双手运动(Unity3D) - 2

    本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01  客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02  数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit

随机推荐