我想在spark中執行我的數據的geoip查找。爲此,我使用MaxMind的geoIP數據庫。如何在spark中執行初始化?
我想要做的是在每個分區上初始化一次geoip數據庫對象,然後用它來查找與IP地址相關的城市。
spark對每個節點都有一個初始化階段,還是應該檢查一個實例變量是否未定義?如果是,請在繼續之前對它進行初始化?例如。類似的信息(這是蟒蛇,但我希望有一個解決方案階):
class IPLookup(object):
database = None
def getCity(self, ip):
if not database:
self.database = self.initialise(geoipPath)
...
當然,這樣做需要的火花將連載整個對象,該文檔警告反對的東西。
我試過使用廣播變量。但它沒有奏效。可能是因爲com.maxmind.geoip.LookupService不可序列化。我嘗試使用SparContext.addFile方法,而且工作正常。添加文件GeoIPCity.dat和GeoIPASNum.dat – 2015-03-10 18:46:16