Как изменить временно используемый каталог на sq oop -import? - PullRequest
1 голос
/ 01 апреля 2020

Я использовал команду sqoop-import, подобную этой:

sqoop import --connect jdbc:oracle:thin:@${machine}:${port}/${schema} --username ${user} --password ${pw} --table "${table}" --columns "${cols}" --where "${machine}" --m 1 --fields-terminated-by ';' --target-dir ${dir} --hive-table "${hive_table}"

Она работала правильно до сих пор, когда я получаю это сообщение:

Picked up _JAVA_OPTIONS: -Djava.io.tmpdir=/data/tmp
Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file:
   64215
Try using the -Djava.io.tmpdir= option to select an alternate temp location.

Действительно, мой / tmp заполнен:

/dev/mapper/system-lv_tmp 5136000 4875796 0 100% /tmp

Я не могу удалить файлы, которые не являются моими в / tmp, поэтому я не могу освободить достаточно места там.

У меня есть попытался изменить _JAVA_OPTIONS на другой каталог, но все равно получил ту же ошибку.

Есть ли способ заставить команду использовать другой каталог для временных файлов?

Ответы [ 2 ]

0 голосов
/ 02 апреля 2020

возможно, ваша проблема в коде, сгенерированном для Sq oop, есть несколько управляющих аргументов генерации кода, таких как:

enter image description here

Например, вы можно попробовать это:

sqoop import \
--connect jdbc:oracle:thin:@${machine}:${port}/${schema} \
--username ${user} \
--password ${pw} \
--table "${table}" \
--columns "${cols}" \
--where "${machine}" \
--m 1 \
--fields-terminated-by ';' \
--target-dir ${dir} \
--hive-table "${hive_table}" \
--outdir /home/user/outdir_directory \
--bindir /home/user/bindir_directory

и java файлы, сгенерированные для Sq oop, собираются в go в {outdir_directory и bindir_directory}, поэтому вы можете удалить их в любое время.

0 голосов
/ 01 апреля 2020

Это вызвано свойством Java java.io.tmpdir и не имеет ничего общего с Sq oop.

Из Java Документов :

Каталог временных файлов по умолчанию определяется системным свойством java.io.tmpdir.

Sq oop не устанавливает значение для tmpdir. Но вы можете переопределить это значение при запуске команды sqoop import.

sqoop import -Djava.io.tmpdir=/path/to/new/tmp ...
...