Я использую Apache Drill
версию 1.14
в windows
системе и запускаю Drill с помощью команды:
sqlline.bat -u "jdbc:drill:zk=local"
Я пытаюсь execute
a join query
на двух compressed
и archived
CSV
файлы.
Запрос:
SELECT * FROM dfs.`C:\Users\admin\Desktop\DRILL_FILES\csvFileParquet\TBL_MOREDATA-20180924181406.tar.gz` AS Table0 INNER JOIN dfs.`C:\Users\admin\Desktop\DRILL_FILES\csvFileParquet\TBL_MOREDATA1-20180924181406.tar.gz` AS Table1 ON Table0.columns[0]=Table1.columns[0]
Но из-за нехватки памяти произошла ошибка:
org.apache.drill.common.exceptions.UserRemoteException: RESOURCE ERROR: One or more nodes ran out of memory while executing the query. Unable to allocate buffer of size 131072 (rounded from 86104) due to memory limit (630194176). Current allocation: 630108434 Fragment 0:0 [Error Id: 585c0644-5fd5-446e-b9b3-d48e0771eb2a on DESKTOP-SM3E3KM:31010]
Чтобы устранить проблему, я попытался обновить файл config\drill-env.sh
, нопроблема остается той же, и похоже, что обновление файла сценария не отражает изменения, потому что я пытаюсь увеличить ПРЯМОЙ ПАМЯТЬ за пределы системной памяти (ОЗУ), каждый раз, когда сверление запускается мирно.Даже не жалуясь, что вы превысили память, поэтому, похоже, изменения не отражают.
export DRILLBIT_MAX_PROC_MEM=12G
export DRILL_HEAP=2G
export DRILL_MAX_DIRECT_MEMORY=10G
, тогда как основная память моей системы составляет всего 8 ГБ.
Пожалуйста, помогите мне устранить ошибку нехватки памяти .Я даже запустил приведенные ниже запросы, чтобы следовать инструкциям по устранению неполадок, но проблема осталась прежней.
alter session set `planner.enable_hashagg` = false;
alter session set `planner.enable_hashjoin` = false;
alter session set planner.width.max_per_node=3;
alter system set planner.width.max_per_query = 100;