我正在尝试 RAPIDS cudf 和 cuspatial,想知道交叉连接两个产生 270 亿行的数据帧的更好方法是什么?
我有两个数据集——一个来自纽约市出租车行程数据(1470 万行),其中包含接送地点的经度/纬度。另一个数据集包含 1.8k 个地铁站的经度/纬度。对于每次旅行,我想与所有车站位置交叉连接,然后计算所有排列的 Haversine 距离。
我不认为 cudf 允许交叉连接,所以我key
在两个数据集中创建了一个新列。
cutaxi['key'] = 0
cumetro['key'] = 0
cutaxi_metro = cutaxi.merge(cumetro, on = 'key', how = 'outer')
cutaxi_metro[hdist_km] = cuspatial.haversine_distance(cutaxi_metro[EntranceLongitude], cutaxi_metro[EntranceLatitude],cutaxi_metro[taxi_pickup], cutaxi_metro[taxi_dropoff])
我在 Nvidia V100 和 4 个虚拟 CPU 上运行代码,但仍然遇到内存不足的问题。我猜我需要分批处理合并,但不知道如何处理它!任何建议表示赞赏!
MemoryError: std::bad_alloc: CUDA error at: ../include/rmm/mr/device/cuda_memory_resource.hpp:68: cudaErrorMemoryAllocation out of memory