我相信,我有一个相对常见的火花流用例:
我有一个对象流,我想根据一些参考数据进行过滤
最初,我认为使用广播变量实现这是一件非常简单的事情:
public void startSparkEngine {
Broadcast<ReferenceData> refdataBroadcast
= sparkContext.broadcast(getRefData());
final JavaDStream<MyObject> filteredStream = objectStream.filter(obj -> {
final ReferenceData refData = refdataBroadcast.getValue();
return obj.getField().equals(refData.getField());
}
filteredStream.foreachRDD(rdd -> {
rdd.foreach(obj -> {
// Final processing of filtered objects
});
return null;
});
}
Run Code Online (Sandbox Code Playgroud)
但是,尽管很少,我的参考数据会定期更改
我的印象是我可以在驱动程序上修改和重新广播我的变量,它会传播给每个工作者,但是Broadcast对象不是也不Serializable需要final.
我有什么替代品?我能想到的三个解决方案是:
将参考数据查找移动到一个forEachPartition或forEachRdd左右,使其完全驻留在工作者上.但是,参考数据存在于REST API中,因此我还需要以某种方式存储计时器/计数器以停止对流中的每个元素访问远程数据库.
每次refdata更改时,使用新的广播变量重新启动Spark上下文.
将参考数据转换为RDD,然后join以我现在流式传输的方式将流转换为流Pair<MyObject, RefData>,尽管这会将参考数据与每个对象一起发送.
对于Internet协议(IP),我可以使用多播:
另外,在示例中,对于UDP,我可以使用:
但是我可以将这些内容用于TCP吗?
在angularJS事件处理的上下文中,我想知道两件事.
在阅读了有关angular $ on,$ broadcast和$ emit以及本机DOM事件流的文档后,我想我理解事件处理程序将在不同的范围内触发.问题是当多个处理程序从不同的位置(例如,控制器与服务)监听相同的范围(例如$ rootScope)时.
为了说明这个问题,我将一个jsfiddle与一个控制器和两个服务放在一起,所有这些都通过$ rootScope http://jsfiddle.net/Z84tX/进行通信
Thanks
使用多播组发送消息而不是仅仅将它们广播到特定端口是否有任何优势?据我所知,在广播时,其他不希望邮件的计算机也会收到这些邮件,但它会对性能/流量产生多大影响?不关心的计算机不会立即转储消息吗?
作为一个侧面问题,局域网外的组播是否工作?
我的应用程序不在Play商店上验证在网络上如果有新版本并下载并启动它.安装完毕后,我想重新启动应用程序,我会用一个BroadcastRecevier带ACTION_PACKAGE_REPLACED.这是代码:
广播:
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)){
ApplicationInfo app = new ApplicationInfo();
if(app.packageName.equals("it.android.downloadapk")){
Intent LaunchIntent = context.getPackageManager().getLaunchIntentForPackage(app.packageName);
context.startActivity(LaunchIntent);
}
}
}
Run Code Online (Sandbox Code Playgroud)
表现:
<receiver android:name="it.android.downloadapk.Broadcast">
<intent-filter>
<action android:name="android.intent.action.ACTION_PACKAGE_REPLACED"></action>
<data android:scheme="package" android:path="it.android.downloadapk" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
问题是,当我安装新的apk时,广播似乎没有启动,为什么?
我想知道我是否可以使用多个参数进行$ broadcast $ on:
$scope.$broadcast('event',$scope.item, $scope.item);
Run Code Online (Sandbox Code Playgroud)
在任何情况下都可以有这样的东西或类似的东西吗?
提前致谢!
我试图抓住包替换广播为我的应用程序和我的应用程序,但由于某些原因在我的收件人我是广播的每个更新的应用程序.我以为你只需要将清单文件中的intent过滤器设置到你的应用程序,但也许我错了?
这是我的代码(清单):
<receiver android:name=".UpdateReciever">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" android:path="com.my.app" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
Reciever:
public class AppUpdateReciever extends BroadcastReceiver {
@Override
public void onReceive(Context con, Intent intent) {
//code..
}
}
Run Code Online (Sandbox Code Playgroud) 我想使用蓝牙将数据从一台设备广播到附近的众多设备.现在,我知道蓝牙广播存在,但是可以使用Android现有的API吗?如果没有,是否有任何其他第三方API可用于它?
关于蓝牙广播的另一个问题:即使您没有收听广播,您是否可以开始收听正在进行的广播并从中接收数据?例如,让设备A成为广播公司,并在5秒内广播以下数据:
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
设备B在整个广播过程中接收到数据,因此他收到:
1 2 3 4 5 6 7 8 9 10
Run Code Online (Sandbox Code Playgroud)
收到的设备C仅在2秒后开始收听,而设备A正在广播5.他会5 6 7 8 9 10按预期接受其余的()吗?
现在我的任务是重写$ exceptionHandler提供程序,以便它将输出带消息的模态对话框并停止默认事件.
我所做的:
在项目初始化我使用方法.provider:
.provider('$exceptionHandler', function(){
//and here I would like to have rootScope to make event broadcast
})
Run Code Online (Sandbox Code Playgroud)
标准注射方法不起作用.
UPD:沙箱 - http://jsfiddle.net/STEVER/PYpdM/
我有以下代码发送udp在子网中广播的数据包.
from socket import *
s=socket(AF_INET, SOCK_DGRAM)
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
s.sendto('this is testing',('255.255.255.255',12345))
Run Code Online (Sandbox Code Playgroud)
以下代码用于接收广播包.
from socket import *
s=socket(AF_INET, SOCK_DGRAM)
s.bind(('172.30.102.141',12345))
m=s.recvfrom(1024)
print m[0]
Run Code Online (Sandbox Code Playgroud)
问题是它没有收到任何广播包.但是,它成功接收发送到该端口的普通udp数据包.
我的机器显然收到了我测试过的广播包netcat.
$ netcat -lu -p 12345
this is testing^C
Run Code Online (Sandbox Code Playgroud)
那么问题究竟在哪里呢?
broadcast ×10
android ×3
angularjs ×3
multicast ×2
udp ×2
apache-spark ×1
bluetooth ×1
events ×1
intentfilter ×1
ip ×1
java ×1
javascript ×1
networking ×1
provider ×1
python ×1
scala ×1
sockets ×1
tcp ×1