Как я могу оптимизировать запрос этой формы, если я постоянно сталкиваюсь с этой ошибкой OOM? Или придумать лучший план выполнения? Если бы я удалил предложение подстроки, запрос работал бы нормально, предполагая, что это займет много памяти.
В случае сбоя задания в выводе beeline отображается пространство кучи OOM Java. Читая онлайн, я предлагал увеличить export HADOOP_HEAPSIZE
, но это все равно приводит к ошибке. Еще я попробовал увеличить hive.tez.container.size
и hive.tez.java.opts
(tez heap), но по-прежнему имеет эту ошибку. В журналах YARN будет превышен предел накладных расходов сборщика мусора, что говорит о том, что комбинация нехватки памяти и / или плана запроса крайне неэффективна, поскольку не может собрать достаточно памяти.
Я использую интерактивный запрос Azure HDInsight 4.0. 20 рабочих узлов, 8 ядер D13v2 и 56 ГБ ОЗУ.
Исходная таблица
create external table database.sourcetable(
a,
b,
c,
...
(183 total columns)
...
)
PARTITIONED BY (
W string,
X int,
Y string,
Z int
)
Целевая таблица
create external table database.NEWTABLE(
a,
b,
c,
...
(187 total columns)
...
W,
X,
Y,
Z
)
PARTITIONED BY (
aAAA,
bBBB
)
Запрос
insert overwrite table database.NEWTABLE partition(aAAA, bBBB, cCCC)
select
a,
b,
c,
...
(187 total columns)
...
W,
X,
Y,
Z,
cast(a as string) as aAAA,
from_unixtime(unix_timestamp(b,'yyMMdd'),'yyyyMMdd') as bBBB,
substring(upper(c),1,2) as cCCC
from database.sourcetable