簡體   English   中英

NiFi中的輸入流文件沒有可行的選擇

[英]No viable alternative at input flowFile in NiFi

我的腳本有問題,該腳本將一些消息解析為json並將其寫入文件中。 代碼在下面,錯誤是:在行號70的第0列的輸入'flowFile'處沒有可行的選擇。

import datetime
import hashlib
from urlparse import urlparse, parse_qs
import sys
from urlparse import urlparse, parse_qs
from datetime import *
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
from time import time

class PyStreamCallback(StreamCallback):
  def __init__(self):
        pass
  def process(self, inputStream, outputStream):
    data = inputStream
    datetime_now = datetime.now()
    log_date = datetime_now.isoformat()
    message = data.replace('  ', ' ').replace('\n ','').replace(' | ', '| ').split('| ')[1].split(" ")
    ip = message[2]
    key = "vod_" + ip
    if message[2] == 'PAUSE' or message[0] == 'PLAY' or message[1] == 'STOP':
        try:
            time_n = int(time())
            action = message[0].upper()
            url = message[3]
            filename = ''
            ref = ''
            if '?' in url:
                parsed_prepare = urlparse(url)
                parsed = parse_qs(parsed_prepare.query)
                filename = url.split('?')[0].split('/')[3]
                for key, value in parsed.iteritems():
                    for el in value:
                        parsed.update({key: el})
                for key, value in parsed.iteritems():
                    if key == 'ref':
                        ref = value
                for key, value in parsed.iteritems():
                    if key == 'titId':
                        c = value
                if c is not None:
                    cat = c[-2:]
                    catalog_id = cat.lstrip('0')
                    content_id = c[:-2]
                dict_test = {"user": {"guruq" : 'false'},
                "device" : {"type" : "siolbox",
                "ip": ip},
                "event" : {"origin" : "iptv",
                "timestamp": time_n,
                "product-type" : "video",
                "type": "vod",
                "channel": {},
                "content": {
                    "id" : content_id,
                    "catalog-id": catalog_id,
                    "action": action,
                    "url": url,
                    "ref" : ref,
                    "filename": filename}
                    }}
            else:
                filename = url.split('/')[2]
            outputStream.write(bytearray(json.dumps(dict_test, indent=4).encode('utf-8')))
        except Exception as e:
            print('%s vod %s 500...' % (log_date, message[2])

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

我需要將其處理到下一個NiFi流程putFile並將其寫入文件中,但是出現了我根本無法理解的錯誤。 這是我第一次使用NiFi。

第68行缺少右括號。請嘗試如下添加:

print('%s vod %s 500...' % (log_date, message[2]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM