过滤大型数据集的最佳方法

uqxowvwt  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(384)

我有一个关于如何从金融交易的大数据集中过滤相关记录的查询。我们使用oracle11g数据库,其中一个要求是生成具有各种标准的各种日终报告。
相关表格大致如下:

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小时)。底层的进程已经被优化了一次又一次,但新的标准不断增加,所以我们又开始挣扎。这个过程相当标准——连接所有表并应用大量where子句(最后一次计数时为20个)。
我想知道我是否有足够大的问题来考虑大数据解决方案,以摆脱这种优化查询游戏每隔几个月。无论如何,成交量只会上升。我已经读了一些关于hadoop+hbase、cassandra、apachepig等的文章,但是由于对这个领域非常陌生,我对如何继续下去有点困惑。
我想这不是Map缩小的问题。hbase似乎提供了过滤器,但我不确定它们的性能。请在座的开明人士为我回答几个问题:
对于大数据解决方案来说,数据集是否足够大(我需要先进入十亿俱乐部吗?)
如果是的话,hbase是实现这一点的好选择吗?
我们不会很快离开甲骨文,尽管其业务量在稳步增长。我是否每天都在用相关表中的转储来填充hdfs?或者每天都可以写delta?
非常感谢!

au9on6nz

au9on6nz1#

欢迎来到千变万化的大数据生态系统。如果您的数据集大小足够大,以至于使用传统工具分析数据的能力非常繁重,那么对于大数据技术来说就足够大了。正如您可能已经看到的,有大量的大数据工具可用,其中许多具有重叠的功能。
首先,您没有提到是否有集群设置。如果没有,那么我会建议研究cloudera和hortonworks的产品。这些公司提供hadoop发行版,其中包括许多最流行的大数据工具(hbase、spark、sqoop等),并使配置和管理组成集群的节点变得更容易。两家公司都提供免费分发,但您必须支付支持费用。
接下来,您需要将数据从oracle中取出,并在hadoop集群中转换成某种格式来分析它。通常用于从关系数据库获取数据并将其放入集群的工具是sqoop。sqoop能够将表加载到hadoop分布式文件系统(hdfs)上的hbase、hive和文件中。sqoop还能够为更新而不是整个表加载执行增量导入。您选择这些目的地中的哪一个会影响您在下一步中可以使用哪些工具。hdfs是最灵活的,因为您可以从pig、您编写的mapreduce代码、hive、cloudera impala等访问它。我发现hbase非常容易使用,但其他人强烈推荐hive。
旁白:有一个名为apachespark的项目有望取代hadoopmapreduce。spark声称与传统的hadoop mapreduce作业相比,它的速度提高了100倍。包括hive在内的许多项目都将在spark上运行,使您能够对大数据执行类似sql的查询,并非常快速地获得结果(blog post)
现在,您的数据已加载,您需要运行这些日终报告。如果您选择hive,那么就可以重用大量sql知识,而不必编写java或学习pig拉丁语(这并不难)。pig将pig拉丁语翻译成mapreduce jobs(目前hive的查询语言也是如此),但是,与hive一样,pig也可以针对spark。无论您为这一步选择哪种工具,我都建议您使用oozie来自动化结果的摄取、分析和移出集群(针对此步骤的sqoop导出)。oozie允许您安排类似您的重复工作流,这样您就可以专注于结果而不是过程。这里记录了oozie的全部功能。
有很多工具可供你使用,这个生态系统的变化速度可以给你鞭笞。cloudera和hortonworks都提供了虚拟机,您可以使用它们来尝试发行版。我强烈建议花更少的时间深入研究每种工具,并尝试其中的一些工具(如Hive、Pig、oozie等等),看看哪些工具最适合您的应用程序)。

相关问题