Как мне оптимизировать запрос этой формы, если я постоянно сталкиваюсь с этой ошибкой OOM? Или придумать лучший план выполнения? Если бы я удалил предложение подстроки, запрос работал бы нормально, предполагая, что для этого требуется много памяти.
Когда задание не выполняется, в выходных данных beeline отображается пространство кучи OOM Java. Читая онлайн, я предлагал увеличить export HADOOP_HEAPSIZE
, но это все равно приводит к ошибке. Еще я попробовал увеличить hive.tez.container.size
и hive.tez.java.opts
(tez heap), но по-прежнему имеет эту ошибку. В журналах YARN будет превышен предел накладных расходов G C, что говорит о том, что сочетание нехватки памяти и / или плана запроса крайне неэффективно, поскольку он не может собрать достаточно памяти.
Я с использованием Azure HDInsight Interactive Query 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