Я пытаюсь выполнить карту с одной большой таблицей (10G) и маленькой таблицей (230 МБ). При небольшом я буду использовать все столбцы для получения выходных записей, после присоединения ключевых столбцовHive Map join: out of memory Exception
Я использовал ниже настройки
установить hive.auto.convert.join = истину;
set hive.mapjoin.smalltable.filesize = 262144000;
Журналы:
**2013-09-20 02:43:50 Starting to launch local task to process map join; maximum memory = 1065484288
2013-09-20 02:44:05 Processing rows: 200000 Hashtable size: 199999 Memory usage: 430269904 rate:0.404
2013-09-20 02:44:14 Processing rows: 300000 Hashtable size: 299999 Memory usage: 643070664 rate:0.604
Exception in thread "Thread-0" java.lang.OutOfMemoryError: Java heap space
at java.util.jar.Manifest$FastInputStream.<init>(Manifest.java:313)
at java.util.jar.Manifest$FastInputStream.<init>(Manifest.java:308)
at java.util.jar.Manifest.read(Manifest.java:176)
at java.util.jar.Manifest.<init>(Manifest.java:50)
at java.util.jar.JarFile.getManifestFromReference(JarFile.java:168)
at java.util.jar.JarFile.getManifest(JarFile.java:149)
at sun.misc.URLClassPath$JarLoader$2.getManifest(URLClassPath.java:696)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:228)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at org.apache.hadoop.util.RunJar$1.run(RunJar.java:126)
Execution failed with exit status: 3
Obtaining error information
Task failed!
Task ID:
Stage-7
Logs:
FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.MapredLocalTask
ATTEMPT: Execute BackupTask: org.apache.hadoop.hive.ql.exec.MapRedTask**
, но до сих пор я столкнулся исключением ООГО, размер кучи установлен в моем кластере составляет 1 Гб. Пожалуйста помогите, какие свойства мне нужно рассмотреть и настроить, чтобы сделать эту сторону карты присоединиться работа
Спасибо Remus за ответ <\br> Я не могу понять одну вещь, маленький стол размером 230 мб и содержит около 900 тыс. Записей. Почему он занимает 650 мб/300 тыс. Строк. – hjamali52
В представлении таблицы хэш-таблицы Java имеются значительные накладные расходы. См. ['JavaDataModel.java'] (http://svn.apache.org/repos/asf/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/util/JavaDataModel.java) –
Значение по умолчанию для hive.mapjoin.followby.gby.localtask.max.memory.usage - 0,55 (для группы по, 0.90 для non-group by) Похоже, как только он достигнет 60,4% в вашем случае, работа провалится. https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties – Garfield