我正在使用一个使用websocket处理程序的Tornado应用程序.我正在使用Supervisord运行应用程序的多个实例,但是我无法平衡websocket连接.
我知道nginx不支持处理开箱即用的websockets,但我按照http://www.letseehere.com/reverse-proxy-web-sockets中的说明使用nginx tcp_proxy模块来反转代理websocket连接.但是,这不起作用,因为模块无法路由websocket url(例如:ws:// localhost:80/something).所以它不适用于我在Tornado应用程序中定义的URL路由.
从我对网络的研究来看,似乎HAProxy是对我的websocket连接进行负载均衡的方法.但是,我很难找到任何体面的指导来设置HAProxy来加载平衡websocket连接,并且还能够处理websocket URL路由.
我真的很感激有关如何实现这一目标的一些详细指示.我也完全接受其他解决方案.
有没有办法从命令行aws工具获取实例类型的内核数量和内存量?
基本上我想以编程方式访问http://aws.amazon.com/ec2/instance-types/上的数据.
我试图使用以下代码将Spark RDD的内容保存到Redis
import redis
class RedisStorageAdapter(BaseStorageAdapter):
@staticmethod
def save(record):
###--- How do I get action_name ---- ###
redis_key = #<self.source_action_name>
redis_host=settings['REDIS']['HOST']
redis_port=settings['REDIS']['PORT']
redis_db=settings['REDIS']['DB']
redis_client = redis.StrictRedis(redis_host, redis_port, redis_db)
redis_client.sadd(redis_key, record)
def store_output(self, results_rdd):
print self.source_action_name
results_rdd.foreach(RedisStorageAdapter.save)
Run Code Online (Sandbox Code Playgroud)
但我想根据self.source_action_name初始化的内容(在BaseStorageAdapter中)使Redis Key不同
如何将source_action_name传递给RedisStorageAdapter.save函数?foreach函数只允许执行函数的名称而不允许参数列表
另外 - 如果有更好的方法将数据从RDD移动到Redis,请告诉我
现在我有3个这样的RDD:
RDD1集:
1 2
3 4
5 6
7 8
9 10
Run Code Online (Sandbox Code Playgroud)
RDD2:
11 12
13 14
Run Code Online (Sandbox Code Playgroud)
rdd3:
15 16
17 18
19 20
Run Code Online (Sandbox Code Playgroud)
我想这样做:
rdd1.zip(rdd2.union(rdd3))
Run Code Online (Sandbox Code Playgroud)
我希望结果是这样的:
1 2 11 12
3 4 13 14
5 6 15 16
7 8 17 18
9 10 19 20
Run Code Online (Sandbox Code Playgroud)
但我有这样的例外:
线程"main"中的异常java.lang.IllegalArgumentException:无法压缩具有不等分区数的RDD
有人告诉我,我可以毫无例外地做到这一点:
rdd1.zip(rdd2.union(rdd3).repartition(1))
Run Code Online (Sandbox Code Playgroud)
但似乎这只是一点点成本.所以我想知道是否有其他方法可以解决这个问题.
我有一个,org.apache.spark.rdd.RDD[(String, (Double, Double), Iterable[(String, Double)])]但它似乎与Iterable努力工作.我有什么办法可以改成它Array[(String, Double)]吗?
我有一个很大的RDD需要花费很多时间collect.我想让每个分区通过使用将其内容写入文本文件mapPartitionsWithIndex.但这不是一种异步方法.
有没有人知道如何异步写出RDD内容?