Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 并行大数据处理_Java_Algorithm_Data Structures_Parallel Processing - Fatal编程技术网

Java 并行大数据处理

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车辆实施监控系统,我的大问题是,我每秒有100k数据(GPS数据)并行处理

数据是从许多GPS信息(GPSID、纬度、经度、时间)发送的100k数据,第二种数据的格式相同,我应该处理这些信息(以某种方式处理(?)以显示视觉系统中每个GPS的路线

我的大问题是:

因为我可以“接收”每秒发送的大量数据?然后以最有效的方式处理它们,以显示每个GPS id的旅行信息

也许是分组的过程?对于每个GPS id?我没有真正清楚的东西,任何额外的想法或功能将是有益的

我想知道一些关于如何处理应用程序使用的这么多信息的想法?算法?分成几台计算机(如何?)

最有可能的解决方案,涉及架构和算法,我正在使用java

我一直在读关于hadoop和map/reduce的书,我不知道我是否能提供服务

我刚找到它:

任何想法都值得赞赏


信息广告: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。请描述一下你的流程,也许有人会给你更有用的建议。非常感谢你的兴趣和帮助,我只是试着解释这个问题,请回答任何问题,做吧,我真的需要帮助:(你是如何获得信息的,是否有必要处理每个数据块,或者如果处理速度太慢,你能跳过数据块吗?