我是Apache Spark的初学者,确实有以下任务:
我正在从数据源读取记录,在Spark转换中,需要通过调用外部Web服务来增强数据,然后才能对其进行进一步处理。
该Web服务将在一定程度上接受并行调用,但一次只允许发送几百条记录。而且,它非常慢,因此尽可能多地进行批处理和并行请求无疑在这里有所帮助。
有没有办法以合理的方式做到这一点?
我想到了读取记录,将它们预处理到另一个数据源,然后一次读取“ API-Queue”数据源500条记录(如果可能的话,可以使用多个进程),然后将记录写入下一个数据源,并使用此结果数据源做最后的转变。
在API调用中,唯一需要遵守这些怪异限制的地方(这就是为什么我认为某些中间数据格式/数据源将是合适的)。
您有什么要向我指出的想法或方向吗?
我正在尝试构建一个通过websocket消息请求时将运行Scrapy Web Spider的API。
我想将日志记录输出转发到websocket客户端,以便您了解-有时运行时间很长的过程中发生的情况。完成后,我还将发送抓取的结果。
由于可以在进程中运行Scrapy,因此我想做到这一点。我在这里找到了一种将外部流程流式传输到websocket的解决方案,但是如果可以在服务器中运行Scrapy,那似乎是不对的。
https://tomforb.es/displaying-a-processes-output-on-a-web-page-with-websockets-and-python
我可以想像有两种方法可以在Twisted中实现此功能:以某种方式使用LogObserver,或定义LogHandler(可能是带有StringIO的StreamHandler),然后使用诸如WebSocketServerProtocol之类的autobahn.websocket类在Twisted中以某种方式处理流。
现在我很困,不知道如何连接两端。
有人可以提供一个简短的示例,说明如何将日志输出从扭曲的日志记录(如果可能的话避免使用文件)流式传输到Websocket客户端?