嗨,我正在尝试通过pyspark集成来创建水槽,但出现错误。
这是代码
from pyspark import SparkConf,SparkContext
from pyspark.streaming import StreamingContext
from pyspark.streaming.flume import FlumeUtils
import sys
from operator import add
from pyspark.sql import functions
hostname= sys.argv[1]
port= sys.argv[2]
renga = SparkConf().setMaster("yarn-client").setAppName("karthik")
amma= SparkContext(conf=renga)
appa=StreamingContext(amma,30)
rajagopal= FlumeUtils.createPollingStream(appa,hostname,port)
rajagopal.persist(StorageLevel.MEMORY_ONLY)
mohan= rajagopal.map(lambda m:m[1])
kowsi= mohan.flatMap(lambda fm : fm.split(" ")[6] == "deparment")
ujesh= kowsi.map(lambda m : (m.split(" ")[6].split("/")[1],1))
balaji=ujesh.reduceByKey(add)
balaji.saveAsTextFiles("xxxxx/user/shashankbh/jarvis/data/flume/conf")
appa.start()
appa.awaitTermination()
预先感谢
关于, Renganathan
答案 0 :(得分:0)
FlumeUtils.createPollingStream
的功能签名为
FlumeUtils.createPollingStream(
ssc,
addresses,
storageLevel=StorageLevel(True, True, False, False, 2),
maxBatchSize=1000,
parallelism=5,
bodyDecoder=<function utf8_decoder at 0x7efe1daea488>)
这意味着第三个位置参数是存储级别。在代码中,您传递了port
,这是从sys.argv[2]
获得的字符串,因此不是有效的存储级别。
这就是stacktrace的意思。对于任何程序员来说,学习如何理解堆栈跟踪都是一项很好的技能。