R与Pentaho Spoon作为ETL工具的比较

7
背景(很抱歉这段文字有点长):
我被委派维护一个ETL,它收集各种在线广告数据,每天大约20-30 MB,并将其附加到MySQL表中。外部承包商使用Pentaho Spoon(kitchen,kettle?)构建了ETL。 ETL由大约250个作业和转换(.ktr,.kjb)组成,每个作业和转换都有大约5到25个步骤。在这个庞大的过程中,经常会出现一些问题。我发现编写R脚本进行转换和加载效率更高。实际上,我认为除了与RMySQL(即plyr!)调用之外,ETL可以减少到不到1000行代码。也许Python将用于从Web提取数据。
我的R使用引起了一些阻力。设计ETL的计算机程序员不知道R,因此如果我离开,他们无法提供帮助。此外,大量时间投入到Spoon ETL中。此外,普通人可以更轻松地通过Spoon中的可视化步骤来跟随,而不是通过R脚本。就我而言,我认为我们被ETL所拖累。但是,由于我没有计算机科学背景,所以在这件事上我没有太多发言权。
如果您对以下内容有任何见解,请发表评论。请知道我已经研究了几个月,并阅读了许多意见,但没有像SO通常提供的那样简明可靠。
  1. 一些公司人士认为 R 不够可扩展。但是我持相反意见,主要是因为其日志记录功能。Spoon 的纯记录输出有限,而所有 R 脚本都可以汇入到每日日志中。在 .ktrs 中修复和避免错误非常繁琐,但通过设置标志和/或搜索 R 日志很容易解决。对此您有何想法?

  2. 这引出了一个大问题。Pentaho 这样的 ETL 工具有什么意义?这篇文章Do I need a ETL?让我相信,如果使用 R 或其他所谓的 OOL,那么没有必要使用 Pentaho 等工具。如果是这样,请问是否可以确认一下?我真的需要第二个意见。如果是这样的话,谁会使用 Pentaho 这样的工具呢?只是没有编程背景的人,还是其他人?我在 Stack Overflow 上看到了不少 Pentaho 相关的问题。

  3. 更多的人使用 R 而不是 Pentaho,是吗?这篇文章http://www.kdnuggets.com/2012/05/top-analytics-data-mining-big-data-software.html是这样的。老实说,我很惊讶 Pentaho 排名第五,这让我更加怀疑谁会使用 Pentaho,以及我对其在工作环境中使用的疑虑是否合理。

感谢任何回复。我并不是对 Spoon 或 Spoon 用户表示轻蔑;我只是真的很困惑,需要外界的意见。


1
建议在 Quora 上进一步提出这个问题 - 那似乎是主观讨论/辩论的更好场所。我认为这是一个很棒的话题,值得在某个地方进行辩论。 - Codek
我已经在R中使用data.table进行ETL过程,它的语法很友好,每个括号DT[,]可以与转换块相比较,就ETL而言。 关于问题1。您可以创建一个日志记录过程来记录任何您想要的内容:转换时间、处理的nrow、捕获的错误消息。只需将log_dt(data.table/data.frame对象)放入dbWriteTable即可。 - jangorecki
总的来说,这是一个很棒的问题。在 Quora 上有人问过吗? - LucasMation
1个回答

4
作为ETL工具的R?这是新鲜事,但无论怎样都可以。不过,如果你能将250个作业和转换缩减到不到1000行的R代码,那么我会说你的ETL写得很差。除此之外,你还要考虑可支持性和可扩展性。我想使用像Spoon这样的图形化工具比使用R代码更容易实现这两点。就我个人而言,我认为你的观点是错误的,你提出的问题也很糟糕,但这是另一个问题了。
关于你提到的一些点,PDI的日志记录非常好,你可以按照自己的喜好记录所有内容,甚至可以将所有内容记录到一个大型数据库表中以获得汇总日志。
ETL不会消失,即使出现了像HDFS这样的非结构化数据存储池的热门技术,也要考虑在R之外进行的数据分析。如果您需要对数据进行报告或OLAP,无论如何都需要进行转换。
更多人使用R而不是Pentaho吗?这是什么问题?你是指PDI吗?它们如何进行比较?一个数据分析工具与一个ETL工具,你想计算用户数?如果你是指整个Pentaho与R的比较,那么我的猜测是不。你正在查看有关R与Weka的报告,并试图将其适应于你的ETL论点。这是不可能的。
==编辑== 好的,所以你目前大约有1000行R和Python代码。随着老板需求的扩大,这些代码逐渐增长,因为你试图满足截止日期,所以新代码编写得不够干净,也没有很好地记录文档。因此,随着时间的推移,这些代码会增长到5000行左右,再加上一些Python脚本。然后有一天你被撞了,新人需要来管理你的代码……他们从哪里开始,如何进行更改?
任何有一定数据经验的人都可以对PDI ETL进行更改,但要想对你所做的更改进行修改,需要具有足够深入的R知识。
ETL工具旨在快速且易于使用,它们还提供比R更多的数据连接性(例如非基于数据库或文件的连接),尽管我猜这就是为什么人们会使用Python等其他语言的原因。
尽管如此,两者都有优点,社区中有一个R插件可以用于PDI,我已经看过演示。
此外,多年来我见过足够多的TSQL到ETL迁移,从经验上知道,即使在短期内使用代码维护ETL似乎很实用,但在长期内只会带来更多的痛苦。
另一方面,如果你能将250个PDI转换缩减到1000行R代码,那么你的ETL可能是由于前任的错误设计而变得臃肿。
如果您想让我对您现有的PDI ETL结构发表意见,也可以安排。

汤姆


谢谢你的回答,汤姆。我知道我的问题写得不好,即使经过几周在脑海中构思。你说得非常正确,我是被误导了——我完全不知道自己在做什么!关键在于这是我第一份工作。我知道如何使用R。我从未使用过ETL工具。看起来R可以做ETL工具应该做的事情,当然还有数据分析。请描述一下为什么说“R作为ETL工具”是疯狂的。即使进行了所有的研究,我也不知道ETL工具和R和Python的混合是什么鬼东西。如果需要更多信息,请告知。 - StatSandwich
我会编辑我的回答... - bugg_tb
我认为ETL工具中缺乏文档并不像R语言中缺乏文档那样痛苦,但是在R语言中编写代码可以有更多时间编写更好的文档、更好的调试能力和更容易的变更请求开发。你可以将你的代码组织成良好的文档包,拥有良好的版本控制,并且可以轻松地在DEV/QA/PROD之间切换存储库。 - jangorecki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接