我在spark sql上有性能问题。哪种情况更好?
假设我们有一个数据框
tableA:
timestamp | id
10:00:00 | 1
10:00:00 | 2
10:00:00 | 3
10:01:00 | 1
10:01:00 | 2
10:01:00 | 3
和另一个:
tableB:
timestamp_a | timestamp_b
08:00:00 | 11:00:00
09:00:00 | 12:00:00
我想通过
上的左联接来联接这两个表timestamp > timestamp_a && timestamp < timestamp_b
而tableA是左表。
我正在尝试确定性能:
第一种情况是我描述的左连接
第二种情况是用我描述的这种左连接左连接tableA的唯一时间戳,然后将它们与tableA的不同id列交叉连接
答案 0 :(得分:0)
如果有重叠,那么我认为第二种方法会更好-尤其是如果第一种方法有很多重复项:
function initMap() {
var directionsDisplay = new google.maps.DirectionsRenderer;
var directionsService = new google.maps.DirectionsService;
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 7,
center: {lat: 41.85, lng: -87.65}
});
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('right-panel'));
var control = document.getElementById('floating-panel');
control.style.display = 'block';
map.controls[google.maps.ControlPosition.TOP_CENTER].push(control);
var onChangeHandler = function() {
calculateAndDisplayRoute(directionsService, directionsDisplay);
};
document.getElementById('start').addEventListener('change', onChangeHandler);
document.getElementById('end').addEventListener('change', onChangeHandler);
}
function calculateAndDisplayRoute(directionsService, directionsDisplay) {
var start = document.getElementById('start').value;
var end = document.getElementById('end').value;
directionsService.route({
origin: start,
destination: end,
provideRouteAlternatives: true,
travelMode: 'DRIVING'
}, function(response, status) {
if (status === 'OK') {
directionsDisplay.setDirections(response);
} else {
window.alert('Directions request failed due to ' + status);
}
});
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=Enter_API_KEY&callback=initMap">
</script>
如果第一个表中的重复项很少,那么这可能无济于事。