Java 并行大数据处理
我正在使用GPS车辆实施监控系统,我的大问题是,我每秒有100k数据(GPS数据)并行处理 数据是从许多GPS信息(GPSID、纬度、经度、时间)发送的100k数据,第二种数据的格式相同,我应该处理这些信息(以某种方式处理(?)以显示视觉系统中每个GPS的路线 我的大问题是: 因为我可以“接收”每秒发送的大量数据?然后以最有效的方式处理它们,以显示每个GPS id的旅行信息 也许是分组的过程?对于每个GPS id?我没有真正清楚的东西,任何额外的想法或功能将是有益的 我想知道一些关于如何处理应用程序使用的这么多信息的想法?算法?分成几台计算机(如何?) 最有可能的解决方案,涉及架构和算法,我正在使用java 我一直在读关于hadoop和map/reduce的书,我不知道我是否能提供服务 我刚找到它: 任何想法都值得赞赏Java 并行大数据处理,java,algorithm,data-structures,parallel-processing,Java,Algorithm,Data Structures,Parallel Processing,我正在使用GPS车辆实施监控系统,我的大问题是,我每秒有100k数据(GPS数据)并行处理 数据是从许多GPS信息(GPSID、纬度、经度、时间)发送的100k数据,第二种数据的格式相同,我应该处理这些信息(以某种方式处理(?)以显示视觉系统中每个GPS的路线 我的大问题是: 因为我可以“接收”每秒发送的大量数据?然后以最有效的方式处理它们,以显示每个GPS id的旅行信息 也许是分组的过程?对于每个GPS id?我没有真正清楚的东西,任何额外的想法或功能将是有益的 我想知道一些关于如何处理应用
信息广告:GPS信息是由脚本创建的,我必须了解接收此类信息的最佳方式,可能我可以跳过一块信息,因为丢失的坐标数据块的1秒不会影响显示,并给我更多时间处理数据,这是可能的,显然,丢失的信息越少越好一种简单的方法是不断接受来自客户端的数据,并创建异步处理数据的请求。如果处理开始时,您知道结果将花费太长时间,则跳过该项并处理下一项。可以考虑使用并发队列(在下面的示例代码中没有显示)以确保项目按照提交给执行服务器服务的顺序进行处理。
public static void main(String[] args) {
final ExecutorService executorService = ...
final long computationTime = 800; // say it tasks 800ms to process the data
while (someCondition) {
// receive gpsData from client
executorService.submit(new ProcessingTask(computationTime, gpsData));
}
}
public class ProcessingTask implements Runnable {
// want response inside a second
private final long responseTime = System.currentTimeMillis() + 1000;
private final long expectedComputationTime;
private final Object gpsData;
public ProcessingTask(long expectedComputationTime, Object gpsData) {
this.expectedComputationTime = expectedComputationTime;
this.gpsData = gpsData;
}
@Override
public void run() {
final long currentTime = System.currentTimeMillis();
if (currentTime > responseTime + expectedComputationTime) {
// the result will be available too late, skip processing this item
return;
}
// TODO process gpsData
// TODO send response to client
}
}
这是太少的信息。不同的数据是如何联系在一起的,你称之为“过程”,你需要对它们做什么…只是为了回应@coffee_machine所说的:信息太少,无法给出有意义的建议。@耶稣L。请描述一下你的流程,也许有人会给你更有用的建议。非常感谢你的兴趣和帮助,我只是试着解释这个问题,请回答任何问题,做吧,我真的需要帮助:(你是如何获得信息的,是否有必要处理每个数据块,或者如果处理速度太慢,你能跳过数据块吗?