Home Tutoriais Pentaho BI Uma análise do step Sort Rows e seus parâmetros no Kettle - PDI
Uma análise do step Sort Rows e seus parâmetros no Kettle - PDI PDF Imprimir E-mail


O Pentaho Data Integration ( PDI ) ou Kettle tem um step responsável pela ordenação ou classificação de dados chamado Sort Rows, este step permite ordenar dados através de campos  informados em sua lista. O mesmo tem duas formas básicas de ordenação: crescentes ou descrecentes.

Este tutorial apresenta uma análise para uso adequado e otimizado de seus parâmetros nos processos de ETL, e sua aplicação em situações distintas.

Para fazermos esta análise geramos um arquivo com 10 milhões de registros e 3 campos:

  • Um campo alfanumérico de 100 posições - Nome
  • um campo inteiro de 3 posições     - Idade
  • Um campo numérico de 14 posições com 2 decimais  - Salário


O tamanho do arquivo gerado era de 1.2 GB.

criamos uma transformação com 3 steps, um de leitura de arquivo CSV file input , um Sort Rows e um Dummy (do nothing), conforme figura a seguir:


Analise Step Sort Rows

Analisamos todos os parâmetros do step sort rows e sua documentação, traduzida logo abaixo:

Step name: Nome da etapa, este nome tem que ser exclusivo em sua transformação.

Sort directory: Diretório no qual os arquivos temporários são armazenados, quando necessário, o padrão é o diretório temporário do sistema operacional. O padrão deste parametro é a variável do java %%java.io.tmpdir%% que captura o diretório temporário do Sistema Operacional.

TMP-file prefix: Escolha um prefixo para que você possa identificar os arquivos quando eles aparecem no diretório temporário.

Sort Size: Quantidade de linhas que você deseja armazenar na memória, com isso deixando mais rápido o processo, buscando diminuir a quantidade de arquivos temporários para gerar menos I / O ( Gravação de dados em arquivos ).

Free memory threshold (in %):  Se o algoritmo de ordenação descobre que ele tem menos memória livre disponível do que o número indicado, ele vai começar a páginar os dados no disco rígido.

Nota: Isto não é ciência exata, porque:

1. Isso é verificado a cada 1000 linhas. Dependendo do tamanho da linha e outras medidas dentro de transformações complexas em que isto poderia levar a um OutOfMemoryError ( falta de memória da JVM ).

2. Em uma máquina virtual Java não é possível saber a quantidade exata de memória livre.  Como tal, recomendamos que você não pode usar este para transformações muito complexo, com outras etapas e processos que consomem muita memória.

Compress TMP Files: Comprime arquivos temporários quando eles são necessários para completar o tipo.

Only pass unique rows?:  Permitir, se você quer passar linhas exclusivas somente para o fluxo de saída(s).


Fields table:  Especificar os campos e ordenação ( crescente/ decrecente) para classificar.


Get Fields:  Recupera uma lista de todos os campos chegando no fluxo(s).


O nome dos arquivos temporários gerados vão ser similares a este exemplo : out_22f02741-3499-11e1-80de-3574790de663.tmp , neste caso o prefixo foi deixado como padrão "out_"


Fizemos 4 análises com parâmetros simulando situações distintas, como por exemplo , quando temos mais processamento que espaço em disco para geração de temporários a opção 2 ou 4 podem ser a mais recomendadas, porém quando o espaço de disco não é um problema, e o que estamos preocupados e tempo de processamento ( performance) a opção 3 pode ser a mais indicada. Tudo vai depender da sua necessidade.


Configuração do equipamento da análise
.

  • Linux Ubuntu 10.04 LST
  • Kernel Linux 2.6.32-37-generic
  • Java version "1.6.0_20" , OpenJDK Runtime Environment (IcedTea6 1.9.10) (6b20-1.9.10-0ubuntu1~10.04.2) , OpenJDK Server VM (build 19.0-b09, mixed mode)
  • 3GB ram
  • Intel Core 2 Duo CPU T6670 2.20GHz

Versão do Pentaho Data Integration: 4.2.1


Veja as analises executadas sobre o Step Sort Rows

Todos as análises foram realizadas com a opção Sort Size ( Rows in memory ) parâmetrizada para 1.000.000


Analise 1 : Usando cache normal ( padrão do step).

Nome do Step
Tempo de execução
Velocidade de R/S
CSV File Input
2 mn 55s56.901
Sort rows
3 mn 56s42.252
dummy
3 mn 56s42.252

Arquivos temporário gerados : 10 arquivos de 117,3 M gerando o total de 1,1 GB de gravação em disco.

Analise 2: Usando Compress TMP files.

Nome do Step
Tempo de execução
Velocidade de R/S
CSV File Input
4 mn 15s 39.109
Sort rows
6 mn 26 s 25.884
dummy
6 mn 26 s 25.88

Arquivos temporário gerados : 10 arquivos compactados com 407,8 KB gerando o total de 4.0 MB de gravação em disco.

Analise 3: com 99% de JVM.

Nome do Step
Tempo de execução
Velocidade de R/S
CSV File Input
1 mn  3 s 156.730
Sort rows
1 mn 53 s 88.096
dummy
1 mn 53 s 88.093

Arquivos temporário gerados : 2000 arquivos com 600,6 KB gerando o total de 1 GB de gravação em disco.

Analise 4: Usando Compress TMP files e 100% JVM.

Nome do Step
Tempo de execução
Velocidade de R/S
CSV File Input
2 mn 46s 60.247
Sort rows
4mn 44s 35.121
dummy
4mn 44s 35.120

Arquivos temporário gerados : 2000 arquivos com 2,1 KB gerando o total de 4.1 MG  de gravação em disco.

Resultados na análise do Step Sort Rows:

Performance ( Análise 3 )

Observando por uma visão da performance podemo afirmar que a melhor configuração do step Sort Rows foi a aplicada da analise 3. Onde forçamos o Kettle a gerar cache , quando parametrizamos um valor de 99% de JVM.

 Comparação
% melhor performance
Analise 3 X Analise 1132%
Analise 3 X Analise 2
309%
Analise 3 X Analise 4
190%

Espaço em Disco ( Análise 2 )

Observando por uma visão de limite de espaço em disco podemo afirmar que a melhor configuração do step Sort Rows foi a aplicada da análise 2. Onde forçamos o Kettle a gerar cache em arquivo compactados.

Comparação
% melhor performance
Analise 2 X Analise 1 27.400%
Analise 2 X Analise 3
24.900%
Analise 2 X Analise 4
2,5%

Performance e Espaço ( Análise 4 )

Observando por uma visão de performance juntamente com de limite de espaço em disco podemo afirmar que a melhor configuração do step Sort Rows foi a aplicada da analise 4. Onde forçamos o Kettle a gerar cache em arquivo compactados  e ajustando a verificação da JVM.

Comparação
% melhor performance
Analise 2 X Analise 4 ( Espaço em Disco )
2,5%
Analise 2 X Analise 4 ( Performance )40%


Opção menos indicada 
( Análise 1 )

Apesar de ser a configuração padrão do step Sort Rows, a mesma foi considerada como a menos indicada para uso segundo esta análise. Outros testes poderão ser realizados buscando uma análise ainda mais profunda na adequação dos parâmetros, mais até o momento está análise indica que se você sempre utiliza o step com suas configurações padrões está perdendo no espaço em disco e também na performance ou ainda nos dois.

Esta análise pode ser considerada para sua tomada de decisão no uso do step Sort Rows, porém cada ambiente pode ter particularidades distintas não consideradas aqui. Esta análise pode ser aplicada ao seu ambiente para confirmação. Disponibilizamos as transformações para realização as suas próprias análise: http://www.ambientelivre.com.br/downloads/doc_details/84-analise-tecnica-do-step-sort-rows-.html


Referências : http://wiki.pentaho.com/display/EAI/Sort+rows

Sobre a Ambiente Livre

A Ambiente Livre Tecnologia e especialista em utilização do Pentaho BI para geração de negócios com soluções open source. fornecemos implantação, integração, suporte,  consultoria e Treinamento em Pentaho BI , assim como treinamento de Pentaho Data Integration Básico e Pentaho Data Integration Avançado.

 
Copyright © 2012 Ambiente Livre Tecnologia - Soluções em Software Livre. Todos os direitos reservados.
Joomla! é um Software Livre com licença GNU/GPL v2.0.
 
Banner

Enquete Pentaho

Sobre qual assunto gostaria de ler um tutorial Pentaho?
 
Banner