#hive
#улей
Вопрос:
Я новичок в Hive. Пытаюсь выполнить один запрос, который выводит данные в один файл.
Ниже приведен мой запрос :
hive -e «УСТАНОВИТЕ hive.auto.convert.join=false;установите hive.server2.logging.operation.уровень = ОТСУТСТВУЕТ; УСТАНОВИТЕ mapreduce.map.memory.mb = 16384; УСТАНОВИТЕ mapreduce.map.java.opts=’-Djava.net.preferIPv4Stack=true -Xmx13107M’; УСТАНОВИТЕ mapreduce.reduce.memory.mb = 13107; УСТАНОВИТЕ mapreduce.reduce.java.opts=’-Djava.net.preferIPv4Stack=true -Xmx16384M’; установите hive.support .параллелизм = false; УСТАНОВИТЕ hive.exec.dynamic.partition=true; УСТАНОВИТЕ hive.exec.dynamic.partition.mode=nonstrict; УСТАНОВИТЕ hive.exec.max.dynamic.partitions.pernode=10000; УСТАНОВИТЕ hive.exec.max.dynamic.partitions=100000; УСТАНОВИТЕ hive.exec.max.created.files= 1000000;УСТАНОВИТЕ mapreduce.input.fileinputformat.split.maxsize=128000000; УСТАНОВИТЕ hive.hadoop.supports.splittable.combineinputformat=true;установите hive.execution.engine=mr; установите hive.enforce.bucketing = true;запрос улья здесь;» > /tmp/analysis
Но в файле /tmp / analysis я вижу предупреждения, а также приведенные ниже.
ПРЕДУПРЕЖДЕНИЕ: класс метода org.apache.commons.был вызван logging.impl.SLF4JLogFactory#release(). ПРЕДУПРЕЖДЕНИЕ: Пожалуйста, смотрите http://www.slf4j.org/codes.html#release для объяснения.
Как я могу подавить это?
Ответ №1:
Из документа Hive https://cwiki.apache.org/confluence/display/Hive/LanguageManual Cli
Ведение журнала:
Hive использует log4j для ведения журнала. По умолчанию CLI не отправляет журналы на консоль. Уровень ведения журнала по умолчанию — WARN для выпусков Hive до версии 0.13.0. Начиная с Hive 0.13.0, уровень ведения журнала по умолчанию — INFO. По умолчанию Hive будет использовать hive-log4j.default
в conf/
каталоге установки Hive, который записывает журналы в /tmp/<userid>/hive.log
и использует WARN
уровень.
Часто желательно отправлять журналы в стандартный вывод и / или изменять уровень ведения журнала в целях отладки. Это можно сделать из командной строки следующим образом:
$HIVE_HOME/bin/hive --hiveconf hive.root.logger=INFO,console
hive.root.logger
определяет уровень ведения журнала, а также место назначения журнала. Указание консоли в качестве целевого объекта отправляет журналы в стандартную ошибку (вместо файла журнала).
По желанию пользователя, журналы могут быть отправлены на консоль путем добавления аргументов, показанных ниже:
bin/hive --hiveconf hive.root.logger=INFO,console //for HiveCLI (deprecated)
bin/hiveserver2 --hiveconf hive.root.logger=INFO,console
В качестве альтернативы пользователь может изменить уровень ведения журнала, только используя:
bin/hive --hiveconf hive.root.logger=INFO,DRFA //for HiveCLI (deprecated)
bin/hiveserver2 --hiveconf hive.root.logger=INFO,DRFA
Другим вариантом ведения журнала является политика регистрации на основе времени (применимо для Hive 1.1.0 и выше, HIVE-9001), предоставляя ЕЖЕДНЕВНУЮ опцию, как показано ниже:
bin/hive --hiveconf hive.root.logger=INFO,DAILY //for HiveCLI (deprecated)
bin/hiveserver2 --hiveconf hive.root.logger=INFO,DAILY
Надеюсь, это поможет!
Ответ №2:
Используйте беззвучный режим hive, который не печатает никаких журналов в выходных данных
hive -S -e "SET hive.auto.convert.join=false;set hive.server2.logging.operation.level=NONE;SET mapreduce.map.memory.mb = 16384; SET mapreduce.map.java.opts='-Djava.net.preferIPv4Stack=true -Xmx13107M';SET mapreduce.reduce.memory.mb = 13107; SET mapreduce.reduce.java.opts='-Djava.net.preferIPv4Stack=true -Xmx16384M';set hive.support.concurrency = false; SET hive.exec.dynamic.partition=true;SET hive.exec.dynamic.partition.mode=nonstrict; SET hive.exec.max.dynamic.partitions.pernode=10000;SET hive.exec.max.dynamic.partitions=100000; SET hive.exec.max.created.files=1000000;SET mapreduce.input.fileinputformat.split.maxsize=128000000; SET hive.hadoop.supports.splittable.combineinputformat=true;set hive.execution.engine=mr; set hive.enforce.bucketing = true;hive query over here;" > /tmp/analysis