我正在使用spark 2.0(python)。我正在尝试将输出流发送到Rabbitmq。以下是我的实施,
def sendPartition(iter):
connection = pika.BlockingConnection(pika.URLParameters('amqp://user:pass@ip:5672/'))
channel = connection.channel()
for record in iter:
channel.basic_publish(exchange='ExchangePostingUpdate',
routing_key='PostingUpdate',
body=json.dumps(record)
)
channel.close()
data_stream.foreachRDD(lambda rdd: rdd.foreachPartition(lambda partition:sendPartition(partition,rabbitconnection)))
工作正常。但正如我们在这里看到的那样,建立连接并为每个分区关闭它。有没有更好的方法呢?
我尝试建立连接并传递给sendPartition(iter,conn)
,但我没有工作。