В ожидании необходимости отладки нашего кода Python путем поиска сообщений об ошибках в файлах журнала я создал задание потоковой передачи Hadoop, которое выдает исключение, но не могу найти сообщение об ошибке (или трассировку стека),
Подобные вопросы потоковая передача hadoop: где находятся журналы приложений? и потоковая передача hadoop: как просматривать журналы приложений? использует модуль Python logging
, который здесь нежелателен, посколькуPython уже регистрирует ошибку, поэтому мы не должны это делать.
Вот код маппера;мы используем встроенный в Hadoop редуктор aggregate
.
#!/usr/bin/python
import sys, re
import random
def main(argv):
line = sys.stdin.readline()
pattern = re.compile("[a-zA-Z][a-zA-Z0-9]*")
try:
while line:
for word in pattern.findall(line):
print "LongValueSum:" + word.lower() + "\t" + "1"
x = 1 / random.randint(0,99)
line = sys.stdin.readline()
except "end of file":
return None
if __name__ == "__main__":
main(sys.argv)
Линия x = 1 / random.randint(0,99)
равна Предполагается до , создающая ZeroDivisionError
, и действительно задание не выполняетсяно очистка файлов журнала не показывает ошибку. Есть ли специальный флаг, который нам нужно установить где-то?
Мы просмотрели документацию по Google Dataproc, а также документацию по Hadoop Streaming.