JSON输入的性能问题

Posted

技术标签:

【中文标题】JSON输入的性能问题【英文标题】:Performance issue with JSON input 【发布时间】:2013-08-28 10:16:29 【问题描述】:

我正在通过水壶从 mongodb 源加载 mysql 表。 Mongodb 表有超过 400 万条记录,当我运行水壶作业时,需要 17 个小时才能完成第一次加载。 即使对于增量负载也需要一个多小时。我尝试增加提交大小并为作业提供更多内存,但性能仍然没有提高。我认为JSON 输入步骤需要很长时间来解析数据,因此速度很慢。 我的转型中有这些步骤

    MongoDB输入步骤 Json 输入 琴弦剪断 如果字段值为空 连接字段 选择值 表格输出。

从 postgre 中提取相同的 400 万条记录比 mongodb 快得多。 有没有办法可以提高性能? 请帮帮我。

谢谢, 深蒂

【问题讨论】:

您可以在 Kettle 中配置性能监控,并准确找出哪一步耗时最长。您还应该能够通过观察运行时的步骤指标来获得一个好主意。我怀疑你是对的,不幸的是,我对 Mongo 一无所知。我可能会尽我所能将提取物推入 Mongo 而不是 Kettle。 嗨,Brian,谢谢.. 是的,通过观察指标了解到 JSON 输入需要很长时间,因为它会将每一行作为每个事务的字符串解析。无法更改我的转换,因为它正在生产中运行,所以如果有人知道提高 JSON 步骤的性能,那就太好了,因为将来我们会将所有内容都转移到 mongo,这可能很关键。 我怀疑您可以直接对JSON Input 步骤执行任何操作。我认为您必须尝试减少从Mongodb Input Step 中选择的行数,可能是通过更改查询表达式。或者,您的集合中可能缺少索引。不确定您的意思是因为它正在生产中而无法更改您的转换。这是否意味着您无法更改任何内容,包括您的 JSON 输入步骤? 嗨,Brian .. 我的意思是我可以更改,但只想提高步进性能.. 你说过像把提取物推到 Mongo 而不是 Kettle 所以我告诉水壶工作正在生产中运行。但是,如果没有加快 JSON 步骤的选项,则无法执行任何操作。 【参考方案1】:

运行该步骤的多个副本。听起来你有 mongo 输入,然后是一个 json 输入步骤来解析 json 结果对吗?所以使用 4 或 8 个 json 输入步骤的副本(或更多,取决于 cpu),它会加快速度。

或者,您是否真的需要解析完整的 json,也许您可​​以通过正则表达式或其他方式提取数据。

【讨论】:

嗨谢谢我这样做了..但解析仍然很慢 我在几个地方听说如果您在 javascript 步骤中使用 Javascript 函数来解析 JSON,它的性能会明显更好。 Jquery 函数等。你试过吗?

以上是关于JSON输入的性能问题的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ功能测试+性能测试简单方法

下载 JSON 时如何解决 UITableView 滚动性能滞后的问题?

json解析性能比较(gson与jackson) (zz)

将 json 格式数据加载到 google bigquery 性能问题

Json和Xml序列化,啥性能更好?

Redshift JSON 性能