flink + kafka,带有两个主题分区和两个并行性;
var southWest = L.latLng(-89.98155760646617, -180), northEast = L.latLng(89.99346179538875, 180);
var bounds = L.latLngBounds(southWest, northEast);
var mymap = L.map('map', {
center: [20.594, 78.962],
maxBounds: bounds, // set max bounds for the world map
zoom: 4, // default zoom level when the web is initiated
zoomSnap: 0.25, // map's zoom level must be in multiple of this
zoomDelta: 0.25, // controls how much the map's zoom level will change after a zoom
minZoom: 3.25, // min zoom level the user can zoom out
maxZoom: 6, // max zoom level the user can zoom in
zoomControl: true, // allow zooming
});
mymap.zoomControl.setPosition('topright'); // set + and - zoom buttons to top right corner .setOpacity('0.4')
L.DomUtil.setOpacity(mymap.zoomControl.getContainer(), 0.2); // set opacity of zoom buttons
var MapAttribution = '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors © <a href="https://carto.com/attributions">CARTO</a>';
var DarkMatterUrl = 'https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}{r}.png'; // For dark theme map
var PositronUrl = 'https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}{r}.png'; // For light theme map
var tiles = L.tileLayer(DarkMatterUrl, { MapAttribution }).addTo(mymap);
// Array of marker coordinates
var markers = [
{
coords:[4.21, 101.97],
country:'Malaysia',
label:'Malaysia',
},
{
coords:[20.594, 78.962],
country:'India',
label:'India',
},
{
coords:[35.861, 104.195],
country:'China',
label:'China',
},
{
coords:[23.421, 53.8478],
country:'UAE',
label:'UAE',
},
{
coords:[23.6978, 120.9605],
country:'Taiwan',
label:'Taiwan',
},
{
coords:[0.7892, 113.9213],
country:'Indonesia',
label:'Indonesia',
},
];
// Edit marker icons
var myIcon = L.icon({
iconUrl: 'yellowcircle.png',
iconSize: [40, 40], // size of the icon
// iconAnchor: [],
// popupAnchor: [],
});
// Loop through markers
for(var i = 0; i<markers.length; i++){
addMarker(markers[i]);
}
// To add the marker coordinates
function addMarker(props){
var marker = L.marker(props.coords, {icon: myIcon}).bindTooltip(props.country).addTo(mymap);
marker.on('mouseover', function(e){
marker.openPopup();
});
marker.on('mouseout', function(e){
marker.closePopup();
});
}
// For GeoJSON features
var StringLines = [{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[113.9213, 0.7892],[101.97, 4.21],[120.9605, 23.6978] // From Indonesia to Malaysia to Taiwan
]
}
}, {
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[53.8478, 23.421],[101.97, 4.21],[104.195, 35.861],[78.962, 20.594] // From UAE to Malaysia to China to India
]
}
}];
// Edits for LineStrings
var LineStringColor = {
"color": "#ff7800",
"weight": 5,
"opacity": 0.65
}
L.geoJSON(StringLines, {style: LineStringColor}).addTo(mymap); // add geoJSON features to the map
像打击一样的问题:
“ key1”的生产速度非常快,每秒1 msg
“ key2”的生成速度很慢,每4秒1 msg
然后窗口将不会在2秒后触发,因为key2的水印很慢到达
如何解决? 我有一个主意:setParallelism(1),因此可以每2秒触发一次窗口,但是如果我想保持Parallelism(2)并使窗口保持2秒触发(或2.5秒超时来触发所有窗口),如何制作它? 请提出一些建议,谢谢!
实际上,场景是白天的消息速度更快,而晚上的消息速度太慢,但需要每2秒更新一次。
答案 0 :(得分:0)
解决此问题的一种方法是在将所有分区的事件混合在一起之后生成水印,以使慢速/空闲分区不会阻碍整体水印:
stream
.rebalance()
.assignTimestampsAndWatermarks(...)
.keyBy(...)
.timeWindow(...)
这确实是以额外的网络改组为代价的。