![](/img/trans.png)
[英]no viable alternative error in python with nifi executescript
[英]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.