加载平面文件的性能降低

2020-09-24 10:13发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的

我正在使用Sap数据服务进行概念验证,并且在一个简单的任务中性能下降。
欢迎您提出任何提示或线索,以减少执行任务的时间。
我已经更改了DSconfig.txt和其他并行性选项中的参数,并进行了一些改进,但与其他ETL工具的时间相去甚远 。
我注意到在处理过程中,CPU达到了97%,但是使用的内存达到了11 GB,仍然保留了5 GB的可用内存。

目标:
加载10个文件,这些文件包含10,000,000行,4个整数字段,按3个字段分组,计算行号并将输出排序为1个文件。
每个文件大小为200MB
服务器上文件的源和目标

问题:
与其他ETL工具相比,读取文件的性能较低
Pentaho:50s
IBM DataStage:37s
PowerCenter:47s
SAP Data 服务:126秒

在Linux上进行了测试,可通过cat delay 7s System读取相同的10个文件(100,000,000行)

环境

软件:

SUSE Enterprise 12上的VMWARE ESX 5.5
Sap Data Services 4.2 SP9
存储库AnyWhere 17

硬件:

Dell PowerEdge M630刀片服务器,带有2个Intel(R)Xeon(R)CPU E5-2697 @ v4 @ 2.30GHz和512GB RAM。
存储IBM Storwize v7000
Switch Brocade 5100
16 GB RAM

开发了两个Job,一个简单,几乎没有组件,每个都有一个数据流。

第二个作业使用更多的对象,虽然速度更快,但仍比其他ETL工具慢。
------------------------- -------------------------------------------------- -------------------------------------------

1)第一份工作(JB_POC)

使用以下组件开发了一个数据流:

对象属性
并行度:10
缓存类型:in_memory_cache

平面文件源属性

查询

从FF_Arquivo1
组中按FF_Arquivo1.Field2,FF_Arquivo1.Field3,FF_Arquivo1.Field4
从FF_Arquivo1.Field2 ASC排序,FF_Arquivo1.Field3 ASC,FF_Arquivo1.Field4 ASC = 映射描述数据类型内容类型
Field2 = FF_Arquivo1.Field2 INT
Field3 = FF_Arquivo1.Field3 INT
Field4 = FF_Arquivo1.Field4 INT
Field5 = count(*)INT

总时间157s

--------------------------------------------------- -------------------------------------------------- ----------------------
2)第二份工作(JB_POC_MULTIFILES)

开发了一个具有10个数据流的工作流(WF_MULTIFILES),每个数据流(DF_POC_ArquivoX)读取一个特定的文件,对行进行分组和计数,并将其保存到1个日志文件中。
另一个数据流(DF_POC_GROUP)合并了10个文件,汇总了 进行分组和计数。

WorkFlow(WF_MULTIFILES)

对象属性
并行度:1
缓存类型:in_memory_cache

总时间126s

谢谢。

最好的问候

(21.2 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


亲爱的

我正在使用Sap数据服务进行概念验证,并且在一个简单的任务中性能下降。
欢迎您提出任何提示或线索,以减少执行任务的时间。
我已经更改了DSconfig.txt和其他并行性选项中的参数,并进行了一些改进,但与其他ETL工具的时间相去甚远 。
我注意到在处理过程中,CPU达到了97%,但是使用的内存达到了11 GB,仍然保留了5 GB的可用内存。

目标:
加载10个文件,这些文件包含10,000,000行,4个整数字段,按3个字段分组,计算行号并将输出排序为1个文件。
每个文件大小为200MB
服务器上文件的源和目标

问题:
与其他ETL工具相比,读取文件的性能较低
Pentaho:50s
IBM DataStage:37s
PowerCenter:47s
SAP Data 服务:126秒

在Linux上进行了测试,可通过cat delay 7s System读取相同的10个文件(100,000,000行)

环境

软件:

SUSE Enterprise 12上的VMWARE ESX 5.5
Sap Data Services 4.2 SP9
存储库AnyWhere 17

硬件:

Dell PowerEdge M630刀片服务器,带有2个Intel(R)Xeon(R)CPU E5-2697 @ v4 @ 2.30GHz和512GB RAM。
存储IBM Storwize v7000
Switch Brocade 5100
16 GB RAM

开发了两个Job,一个简单,几乎没有组件,每个都有一个数据流。

第二个作业使用更多的对象,虽然速度更快,但仍比其他ETL工具慢。
------------------------- -------------------------------------------------- -------------------------------------------

1)第一份工作(JB_POC)

使用以下组件开发了一个数据流:

对象属性
并行度:10
缓存类型:in_memory_cache

平面文件源属性

查询

从FF_Arquivo1
组中按FF_Arquivo1.Field2,FF_Arquivo1.Field3,FF_Arquivo1.Field4
从FF_Arquivo1.Field2 ASC排序,FF_Arquivo1.Field3 ASC,FF_Arquivo1.Field4 ASC = 映射描述数据类型内容类型
Field2 = FF_Arquivo1.Field2 INT
Field3 = FF_Arquivo1.Field3 INT
Field4 = FF_Arquivo1.Field4 INT
Field5 = count(*)INT

总时间157s

--------------------------------------------------- -------------------------------------------------- ----------------------
2)第二份工作(JB_POC_MULTIFILES)

开发了一个具有10个数据流的工作流(WF_MULTIFILES),每个数据流(DF_POC_ArquivoX)读取一个特定的文件,对行进行分组和计数,并将其保存到1个日志文件中。
另一个数据流(DF_POC_GROUP)合并了10个文件,汇总了 进行分组和计数。

WorkFlow(WF_MULTIFILES)

对象属性
并行度:1
缓存类型:in_memory_cache

总时间126s

谢谢。

最好的问候

(21.2 kB)
付费偷看设置
发送
4条回答
nice_wp
1楼-- · 2020-09-24 10:55

不要尝试对文件进行排序,汇总...。 DS必须将完整的文件内容读取到内存中才能执行这些操作。

首先将文件复制到暂存数据库。 您可以使用Data_Transfer作为数据流中的第一个转换来执行此操作。 查询转换的逻辑将在数据库中执行,只有结果将通过DS内存流式传输到输出文件。

灬番茄
2楼-- · 2020-09-24 11:05

很抱歉,但我看不到出现这种情况的任何原因 需求。 如果您想充分利用该工具,请根据最佳实践来使用它。 在DS中,这通常仅表示"让数据库完成工作"。

Nan4612
3楼-- · 2020-09-24 11:03

德克,谢谢您的回复。 我们理解您的观点,一般而言,使用DBMS是解决问题的方法。 但是在这种情况下,要求似乎恰好是衡量性能处理文件的标准。 并且考虑到其他工具可以按要求进行操作,因此不建议使用DBMS。 无论如何,整个过程需要119秒。 读取文件并丢弃数据的作业(带放弃的map_operation)需要90秒钟。 在操作系统级别(cat * .txt> newfile)执行此操作仅需8秒钟。 因此,问题不在于排序或汇总数据,而是将平面文件读入内存。 DS大约需要90秒钟才能读取数据,而30秒钟才能进行排序和汇总。 有什么配置参数或方法可以用来加快读取平面文件的速度?

谢谢。

haha101010
4楼-- · 2020-09-24 10:59

嗨,

您能告诉我最终结果是什么吗? 我遇到类似的问题。

谢谢

一周热门 更多>