У меня есть требование обновления hashmap. В работе Spark у меня есть JavaPairRDD, и в этой оболочке имеется 9 разных хэш-карт. Каждый хэш-файл имеет ключ около 40-50 ключей cr. При слиянии двух карт (ReduceByKey in spark) я получаю исключение OutOfMemory памяти кучи Java. Ниже приведен фрагмент кода.Hashmap Over Большой набор данных, дающий OutOfMemory в искры
private HashMap<String, Long> getMergedMapNew(HashMap<String, Long> oldMap,
HashMap<String, Long> newMap) {
for (Entry<String, Long> entry : newMap.entrySet()) {
try {
String imei = entry.getKey();
Long oldTimeStamp = oldMap.get(imei);
Long newTimeStamp = entry.getValue();
if (oldTimeStamp != null && newTimeStamp != null) {
if (oldTimeStamp < newTimeStamp) {
oldMap.put(imei, newTimeStamp);
} else {
oldMap.put(imei, oldTimeStamp);
}
} else if (oldTimeStamp == null) {
oldMap.put(imei, newTimeStamp);
} else if (newTimeStamp == null) {
oldMap.put(imei, oldTimeStamp);
}
} catch (Exception e) {
logger.error("{}", Utils.getStackTrace(e));
}
}
return oldMap;
}
Этот метод работает с небольшим набором данных, но не с большим набором данных. Тот же метод используется для всех 9 разных хэш-карт. Я искал увеличение памяти кучи, но не знаю, как увеличить это в искровом режиме, поскольку это работает на кластере. Размер моего кластера также большой (300 узлов). Пожалуйста, помогите мне найти некоторые решения.
Спасибо.