随时找到数据流中的中位数:有一个源源不断地吐出整数的数据流,假设你有足够的空间来保存吐出的数。请设计一个名叫medianholder的结构,medianholder可以随时取得之前吐出所有数的中位数。
时间: 2023-05-04 17:01:38 浏览: 66
题目中要求设计一个名为medianholder的结构体,用于随时取得数据流中的中位数。假设已有足够的空间来保存数据。在存储数据的同时,也要保证空间的充足以保存中位数。可以设计一个数据容器来保存所有输入的数据,并使用排序算法(如快速排序)将数据排序,并将中位数的位置保存在容器中。然后,可以使用中位数位置的索引来确定中位数。如果新的数据进入了容器,则需要重新排序,以更新中位数的位置。
相关问题
Storm: 1.列举几个常见的流计算框架。 2.试述流数据的特点。 3.试列举几种Stream Groupings 的方式。
好的,针对你的问题,我来逐一回答:
1. 常见的流计算框架包括:
- Apache Storm:分布式实时计算系统,支持高吞吐量和低延迟的数据流处理。
- Apache Flink:分布式流处理框架,支持高吞吐量和低延迟的数据流处理,并提供批处理和流处理的统一 API。
- Apache Kafka Streams:分布式流处理框架,基于 Kafka 平台,支持高吞吐量和低延迟的数据流处理。
- Apache Spark Streaming:流处理框架,基于 Spark 平台,支持高吞吐量和低延迟的数据流处理。
2. 流数据的特点包括:
- 数据无限:流数据是源源不断地产生的,没有终点。
- 数据实时:流数据是实时生成的,需要实时处理。
- 数据不可重复:流数据只能被处理一次,不能像批处理数据一样反复处理。
- 数据不可控:流数据的数量和速度是不可控的,需要动态调整处理能力。
3. Stream Groupings 是 Storm 中用于对流数据进行分组的方式,常见的 Stream Groupings 包括:
- Shuffle Grouping:随机分组,将数据随机分配给下游 Bolt。
- Fields Grouping:按字段分组,将具有相同字段值的数据分配给同一下游 Bolt。
- All Grouping:所有数据都分配给所有下游 Bolt。
- Global Grouping:所有数据都分配给一个下游 Bolt。
- None Grouping:不进行分组,将数据平均分配给下游 Bolt。
流计算的数据处理模型是什么?
流计算的数据处理模型是基于流式数据的连续计算。它不同于批处理模型,批处理模型是对有限数据集的离线计算。在流计算模型中,数据源源不断地产生,处理过程需要实时响应。
流计算模型通常包含三个阶段:
1. 输入阶段:从输入源获取数据流,并将数据流转化为可处理的数据格式。
2. 处理阶段:对数据流进行处理和计算,例如实时聚合、统计、过滤、转换等操作。
3. 输出阶段:将处理结果输出到外部系统或存储介质中,例如数据库、消息队列、缓存、文件等。
在流计算模型中,因为数据源源不断地产生,所以需要实时响应,同时还需要考虑数据的正确性、可靠性和一致性等问题。流计算通常使用基于时间窗口或基于事件触发的机制来进行数据处理,以保证处理的实时性和准确性。
流计算模型可以应用于各种实时数据处理场景,例如物联网、金融交易、网络安全、广告投放等。