我想开始考虑如何扩展我为数据分析编写的算法,以便它们可以应用于任意大的数据集。我想知道实现这一目标的相关概念(线程、并发、不可变数据结构、递归)和工具(Hadoop/MapReduce、Terracota 和 Eucalyptus)是什么,以及这些概念和工具之间的具体关系如何。我在 R、Python 和 bash 脚本以及 C 和 Fortran 编程方面有初步的背景,但我也熟悉一些基本的函数式编程概念。我是否需要改变我的编程方式,使用不同的语言(Clojure、Haskell 等),或者简单地(或不那么简单!)适应 R/Hadoop (HRIPE) 之类的东西……或为 Python 编写包装器启用多线程或 Hadoop 访问?我知道这可能涉及对额外硬件的要求,我想了解一些基本的可用要求/选项。对于这个相当大但模糊的问题,我深表歉意,但只是想开始 - 提前致谢!
最佳答案
虽然语言和相关技术/框架对于扩展很重要,但与算法、数据结构和架构的重要性相比,它们往往显得苍白无力。忘掉线程:您可以通过这种方式利用的内核数量太有限了——您需要单独的进程交换消息,因此您至少可以扩展到快速 LAN 上的小型服务器集群(理想情况下是大型 集群也是如此!-)。
关系数据库可能是“苍白无力的技术”的一个异常(exception)——当您试图扩大几个数量级时,它们真的可以让您束手无策。这是您的情况吗?您是担心只有几十台或最多数百台服务器,还是开始考虑数千台或无数台服务器?在前一种情况下,您仍然可以扩展关系技术(例如通过水平和垂直分片)来支持您——在后一种情况下,您正处于临界点,或者已经过了临界点,必须开始考虑键/值存储。
回到算法——“数据分析”涵盖的范围很广……过去几年我在谷歌的大部分工作都属于这个范围,例如在集群管理软件领域,目前在商业智能领域。您是否需要确定性分析(例如,出于会计目的,您不可能忽略 8 位数字中的一分钱),或者您能否忍受一些非-决定论?大多数“数据挖掘”应用程序都属于第二类——您不需要完全精确和确定性,只需要很好地估计您的结果可以被证明落入的范围,比如 95% 的概率。
如果您需要进行“近实时”数据分析,这一点尤其重要——对同一计算的近实时和 100% 准确度限制不是一个快乐的露营者制作。但即使在批量/批量离线数据挖掘中,如果你能提供 95% 保证的结果比 99.99% 快几个数量级(我不知道数据挖掘是否可以 em> 100.00%!-),这可能是一个很好的权衡。
我过去几年一直在做的工作对“近实时”有一些要求,对离线“批量”分析有更多要求——只有极少数情况下绝对的准确性是绝对必须的。逐渐细化抽样(当不需要完全保证准确性时),尤其是与分层抽样(与领域专家紧密设计!!!)相结合,已被反复证明是一种很好的方法;如果您不理解这个术语,并且仍然想扩展到 TB 级以上,达到 EB 级和 PB 级的处理量,那么您迫切需要 Stats 201 中的一个很好的复习类(class),或者您所在领域涵盖这些概念的任何类(class)the woods(或在 iTunes University 上,或大学 channel 中的 YouTube 产品,或 blip.tv,或其他)。
Python、R、C++ 等等,只有您掌握了这些算法问题,以及随之而来的架构问题后,它们才会发挥作用(您能否设计一个计算架构以“在统计上生存”无数服务器中的几台服务器死亡,无需大量返工即可恢复到具有统计显着性的准确性......?),以及支持设计和存储技术选择。
关于python - 扩展算法所需的概念和工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2414915/
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我想这样组织C源代码:+/||___+ext||||___+native_extension||||___+lib||||||___(Sourcefilesarekeptinhere-maycontainsub-folders)||||___native_extension.c||___native_extension.h||___extconf.rb||___+lib||||___(Rubysourcecode)||___Rakefile我无法使此设置与mkmf一起正常工作。native_extension/lib中的文件(包含在native_extension.c中)将被完全忽略。
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Pythonconditionalassignmentoperator对于这样一个简单的问题表示歉意,但是谷歌搜索||=并不是很有帮助;)Python中是否有与Ruby和Perl中的||=语句等效的语句?例如:foo="hey"foo||="what"#assignfooifit'sundefined#fooisstill"hey"bar||="yeah"#baris"yeah"另外,类似这样的东西的通用术语是什么?条件分配是我的第一个猜测,但Wikipediapage跟我想的不太一样。
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
目录一.加解密算法数字签名对称加密DES(DataEncryptionStandard)3DES(TripleDES)AES(AdvancedEncryptionStandard)RSA加密法DSA(DigitalSignatureAlgorithm)ECC(EllipticCurvesCryptography)非对称加密签名与加密过程非对称加密的应用对称加密与非对称加密的结合二.数字证书图解一.加解密算法加密简单而言就是通过一种算法将明文信息转换成密文信息,信息的的接收方能够通过密钥对密文信息进行解密获得明文信息的过程。根据加解密的密钥是否相同,算法可以分为对称加密、非对称加密、对称加密和非
华为OD机试题本篇题目:明明的随机数题目输入描述输出描述:示例1输入输出说明代码编写思路最近更新的博客华为od2023|什么是华为od,od薪资待遇,od机试题清单华为OD机试真题大全,用Python解华为机试题|机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为o
我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.