火花流处理并行性

时间:2017-11-01 10:07:55

标签: apache-spark pyspark spark-streaming

我使用spark流式处理作业来处理我的输入请求。

我的火花输入采用文件名,下载数据,进行一些更改并将数据发送到下游。

目前,处理一个文件需要2分钟。

这些文件请求是独立操作,可以并行执行任务。

目前,当我通过netcat服务器提供输入时,首先处理每个请求,然后处理下一个请求。我希望这个操作是平行的。

@timing
def sleep_func(data):
    print("start file processing")            
    time.sleep(60)      
    print("end file processing")                  
    return data

rdd = ssc.socketTextStream(sys.argv[1], int(sys.argv[2]))     
rdd = rdd.map(sleep_func)    
final_rects = rdd.pprint()

我试图创建多个sockettextstream,将基于此在每个执行器中处理。

https://spark.apache.org/docs/2.0.2/streaming-programming-guide.html#level-of-parallelism-in-data-receiving

rdd = [ssc.socketTextStream(sys.argv[1], int(sys.argv[2])) for _ in range(5)]

但不确定如何单独处理这些单独的流。

1 个答案:

答案 0 :(得分:0)

你的意思是你想要并行处理一批数据而不是一个一个,对吗?

请参阅:How jobs are assigned to executors in Spark Streaming?