Avançar para a área de conteúdo

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

A primeira vez que acessar o developerWorks, um perfil será criado para você. Informações do seu perfil (tais como: nome, país / região, e empresa) estarão disponíveis ao público, que poderá acompanhar qualquer conteúdo que você publicar. Seu perfil no developerWorks pode ser atualizado a qualquer momento.

Todas as informações enviadas são seguras.

  • Fechar [x]

Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

Todas as informações enviadas são seguras.

  • Fechar [x]

Migrando os aplicativos SPADE do InfoSphere Streams para SPL, Parte 3: Migrar aplicativos SPADE com funções definidas pelo usuário

Um guia introdutório de exemplos

Kevin Erickson, Senior Software Engineer, I.B.M.
Photo of Kevin Erickson
Kevin Erickson passou a fazer parte da IBM em Rochester, MN, em 1981, como engenheiro eletricista trabalhando no desenvolvimento e teste de unidades de disco rígido. Ele contribuiu para uma grande variedade de produtos e tecnologias IBM, desde sistemas de controle de servomecanismo de eixo e atuador de disco rígido até componentes de kernel do sistema operacional do AS/400 e sucessor. Mais recentemente, Kevin trabalhou no teste de desempenho do supercomputador Roadrunner, o primeiro computador a quebrar a barreira de 1 petaflop. Em 2009, ele se transferiu para o Software Group para trabalhar com a equipe do InfoSphere Streams, primariamente em diversas funções relacionadas a testes. Ao longo de sua carreira na IBM, Kevin recebeu 14 patentes nos EUA e várias em outros países. Ele possui bacharelado em Engenharia Elétrica da Universidade de Minnesota.
Richard P. King, Senior Programmer, IBM
Richard King é membro da equipe do InfoSphere Streams há vários anos. Quando ele passou a fazer parte da IBM em 1977, trabalhou como Associate Programmer no desenvolvimento do System/38. Desde sua transferência para a Research Division da IBM no IBM Thomas J. Watson Research Center in Yorktown em 1981, ele trabalhou em uma ampla gama de projetos, incluindo o design e o desenvolvimento do que se tornou a IBM Sysplex Coupling Facility. Richard é bacharel em Engenharia Industrial e Pesquisa de Operações pela Universidade Cornell e mestre em Pesquisa de Operações e Engenharia Industrial pela Universidade Northwestern.

Resumo:  O novo recurso mais significativo da Versão 2.0 do produto IBM InfoSphere® Streams é a transformação do modelo de linguagem de programação de Stream Processing Application Declarative Engine (SPADE) para Stream Processing Language (SPL). Os usuários com aplicativos SPADE de versões anteriores precisarão migrar e portar seus aplicativos para SPL ao atualizar suas instalações para a Versão 2.0. Este tutorial é a Parte 3 de uma série com 5 partes que usa exemplos reais de SPADE para demonstrar uma série de procedimentos detalhados para migrar e portar diferentes tipos de conteúdo de aplicativos SPADE. A Parte 3 demonstra a migração de aplicativos SPADE com funções definidas pelo usuário.

Visualizar mais conteúdo nesta série

Data:  18/Jul/2011
Nível:  Intermediário

Atividade:  2895 visualizações

Configurando e testando o aplicativo SPADE com função definida pelo usuário

Esta seção descreve o processo para migrar e portar um aplicativo SPADE contendo recursos de funções definidas pelo usuário. Para este tutorial, o aplicativo SPADE udf_at_work (que é fornecido como um exemplo de aplicativo enviado com a Versão 1.2.x do InfoSphere Streams) é usado para demonstrar os procedimentos detalhados de migração e portabilidade.

Em SPL, as funções definidas pelo usuário são chamadas de funções nativas. É possível implementar funções definidas pelo usuário e funções nativas com uma de duas maneiras diferentes: como bibliotecas de código ou como funções em linha. Este tutorial descreve como portar usando esses dois tipos de implementação.

A etapa inicial do processo de migração é garantir que o aplicativo SPADE a ser migrado esteja funcionando corretamente. Se o aplicativo SPADE não compilar ou produzir os resultados corretos, a migração para SPL falhará durante a tradução ou o SPL resultante não compilará ou produzirá os resultados corretos. O procedimento seguinte define as etapas usadas para garantir que o aplicativo SPADE esteja adequadamente preparado para o processo de migração e portagem.

  1. Alterando diretórios para o diretório ativo base.
    cd ~/migrationsamples
    

  2. Crie uma cópia do exemplo de código do udf_at_work da instalação do InfoSphere Streams Versão 1.2.x em um subdiretório udf no diretório de trabalho atual, no qual <V1.2.x_Installation> indica o nome do caminho do local do sistema de arquivos base para a instalação.
    cp -r ~/<V1.2.x_Installation>/samples/atwork/user_defined_functions udf
    

  3. Compile o aplicativo.
    cd udf
    make
    

  4. Execute o script gerado pelo compilador start_streams_udf_at_work.sh para criar e iniciar a instância padrão chamada spade@your_userid.
    ./start_streams_udf_at_work.sh
    

  5. Execute o script gerado pelo compilador submitjob_udf_at_work.sh para enviar o trabalho udf_at_work para execução.
    ./submitjob_udf_at_work.sh
    

  6. Monitore os arquivos de saída, que são gravados por padrão no subdiretório de dados, a fim de confirmar se o aplicativo está gravando dados nos arquivos, verificando se o tamanho desses arquivos é superior a 0 byte e se estão crescendo à medida que você continua a observar seus tamanhos. Há dois arquivos: um que corresponde à implementação em linha e outro que corresponde à implementação de biblioteca.
    ls -l data/*.result
    

  7. Como opção, observe o conteúdo real dos arquivos de saída.
    my_editor data/*.result &
    

  8. Execute o script gerado pelo compilador canceljob_udf_at_work.sh para cancelar e encerrar o trabalho udf_at_work.
    ./canceljob_udf_at_work.sh
    

  9. Execute o script gerado pelo compilador stop_streams_udf_at_work.sh para parar e remover a instância padrão chamada spade@your_userid.
    ./stop_streams_udf_at_work.sh
    

Tradução do aplicativo SPADE com função definida pelo usuário para SPL

A próxima etapa da migração é configurar e executar o script de tradução usando uma instalação da Versão 2.0.

  1. Crie um diretório de trabalho SPL, localizado fora do subdiretório do aplicativo udf, para colocar e trabalhar com o código migrado. Este tutorial usa o diretório myspl.
    mkdir myspl
    

  2. Converta a origem SPADE para SPL usando o comando de conversão spade-to-spl.
    spade-to-spl -t myspl -f udf_at_work.dps
    

Após a tradução, uma lista de erros, avisos e mensagens informativas parecida com a seguinte pode ser exibida:
Lista 1. Mensagem de erro

udf_at_work.dps:68:9: CDISP0695E ERROR: Functions defined 
in headers specified using the 'package' keyword must now 
be specified in the 'function.xml' file.  Refer to the 'SPL 
Toolkit Development Reference' for specifics.


Lista 2. Mensagem de erro
udf_at_work.dps:69:9: CDISP0695E ERROR: Functions defined 
in headers specified using the 'package' keyword must now 
be specified in the 'function.xml' file.  Refer to the 'SPL 
Toolkit Development Reference' for specifics.


Lista 3. Mensagem de erro
udf_at_work.dps:71:1: CDISP0697E ERROR: Library paths specified 
using the 'libpath' keyword must now be specified in the 
'function.xml' file.  Refer to the 'SPL Toolkit Development 
Reference' for specifics.


Lista 4. Mensagem de erro
udf_at_work.dps:74:1: CDISP0696E ERROR: Libraries specified 
using the 'libs' keyword must now be specified in the 
'function.xml' file.  Refer to the 'SPL Toolkit Development 
Reference' for specifics.


Lista 5. Mensagem de aviso
udf_at_work.dps:109:8: CDISP0703W WARNING: SPL não suporta
seletores de coluna.  Ensure that the source's output
schema accounts for all attributes in the input data,
otherwise a runtime exception may occur.


Lista 6. Mensagem informativa
udf_at_work.dps:122:36: CDISP0478I a função 'toFloat' não
é fornecida pela biblioteca SPL de tempo de execução.  Ela foi substituída
por um cast para 'float32'.


Lista 7. Mensagem informativa
udf_at_work.dps:150:36: CDISP0478I A função 'toFloat' não
é fornecida pela biblioteca SPL de tempo de execução.  Ela foi substituída
por um cast para 'float32'.


Lista 8. Mensagem de aviso
udf_at_work.dps:175:8: CDISP0724W WARNING: Parâmetro
'writePunctuations' com um valor de 'true' foi
especificado neste sink, pois 'dropPunct' não foi
especificado no código SPADE correspondente.  This may
not be semantically equivalent if the SPADE code was
compiled with '-U' or '--preserve-punctuations'.  You may
wish to remove the 'writePunctuations' parameter or give
it a value of 'false'.


Lista 9. Mensagem de aviso
udf_at_work.dps:187:8: CDISP0724W WARNING: Parâmetro
'writePunctuations' com um valor de 'true' foi
especificado neste sink, pois 'dropPunct' não foi
especificado no código SPADE correspondente.  This may
not be semantically equivalent if the SPADE code was
compiled with '-U' or '--preserve-punctuations'.  You
may wish to remove the 'writePunctuations' parameter
or give it a value of 'false'.


Lista 10. Mensagem de erro
udf_at_work.dps:193:7: CDISP0063E ERROR: Depuração de
função não suportada em SPL.

Cada um desses itens de ser tratado e avaliado para determinar o curso de ação necessário para produzir um aplicativo funcional comparável em SPL. A abordagem desses itens pode resultar em várias atividades de portabilidade, como alterações no arquivo udf_at_work.spl migrado, no arquivo function.xml e, possivelmente, em outros arquivos SPL gerados. Também pode haver a necessidade de outros acréscimos de implementação e alterações para desenvolvimento do ambiente necessário para um aplicativo SPL.

2 de 10 | Anterior | Próximo

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Information Management
ArticleID=699981
TutorialTitle=Migrando os aplicativos SPADE do InfoSphere Streams para SPL, Parte 3: Migrar aplicativos SPADE com funções definidas pelo usuário
publish-date=07182011
author1-email=kjerick@us.ibm.com
author1-email-cc=
author2-email=rpk@us.ibm.com
author2-email-cc=