我有大量的地理標記行 - 數以百萬計 - 我需要使用Spark SQL對所有點進行距離計算。使用基本的三角函數和一個正弦函數距離函數,SQL可以正常工作。緯度點的緯度在緯度+/-米之間,經度的緯度相同;按距離DESC排序,我做了一個top-n找到最近的點。到現在爲止還挺好。 數據是全局數據,因此將所有點存儲在內存中效率不高。Spark - 搜索空間數據 - 分區修剪
我的問題:
我多少利益可實現使用分區修剪通過劃分數據成緯度範圍,經度子範圍?這會將搜索區域縮小到1-3緯度分區,並減少10個經度子分區。這是少得多的數據;但我不知道Spark SQL優化器是否可以修剪分區和子分區。我還不清楚緩存RDD上的分區修剪是否特別有益。沒有參與。
我可以使用Parquet文件進行分區,然後只讀取所需的實木複合地板分區,而不是所有數據。有沒有我應該使用的具有分區功能的其他文件格式?