2017-01-13 20 views

答えて

3

あなたはNifiにExecuteScriptのまでプロセッサを用いて、第1のXヘッダー行を削除することができます。

import json 
import java.io 
from org.apache.commons.io import IOUtils 
from java.nio.charset import StandardCharsets 
from org.apache.nifi.processor.io import StreamCallback 

class PyStreamCallback(StreamCallback): 
    def __init__(self): 
     pass 
    def process(self, inputStream, outputStream): 
    text = IOUtils.readLines(inputStream, StandardCharsets.UTF_8) 
    for line in text[3:]: 
     outputStream.write(line + "\n") 

flowFile = session.get() 
if (flowFile != None): 
    flowFile = session.write(flowFile,PyStreamCallback()) 
    flowFile = session.putAttribute(flowFile, "filename", flowFile.getAttribute('filename').split('.')[0]+'_translated.json') 
    session.transfer(flowFile, REL_SUCCESS) 

をこれは明らかに最初の3行が削除されますが、あなたが簡単に多かれ少なかれ行を削除するためにそれを修正することができます。

次は私が自分自身のために書いた例Jythonスクリプトです。

希望に役立ちます。

+0

ありがとうございます!これはPythonでもできますか?コードを準備する必要はなく、ExecuteScriptをPythonで記述できるかどうかを知りたいだけです。 –

+0

短い答え - **いいえ**長い答え** **多分**:スクリプトエンジンは内部的にJythonを使用しているので、純粋なPythonモジュールを使用して、ExecuteScriptを使用するときにそれを使用できるようにしてください。あなたはより多くの情報を得ることができます[ここ](https://community.hortonworks.com/questions/53645/cannot-use-numpy-or-scipy-in-python-in-nifi-execut.html) Pythonモジュールが必要な場合は、ExecuteProcessまたは(入力フローファイルがある場合)コマンドラインのPythonを実行できるExecuteStreamCommandを検討してください。答えが気に入ったら、アップ投票を検討してください、ありがとう。 –

+0

@BiplobBiswas、 n個のヘッダ行を削除した後、各行を単一フローファイルではなく別々のフローファイルに送ることはできますか? –

関連する問題