2015-04-15 3 views
0

Хорошо, я пишу Java-задачу Hadoop MR. Часть задачи вызывает внешний скрипт python как новый процесс, передавая ему информацию и считывая ее обратно. Я делал это несколько раз, прежде чем без проблем, когда не работал с hadoop.Импорт Python в Hadoop

Я также могу назвать один скрипт python как новый процесс в hadoop, когда он ничего не импортирует, или только то, что находится на установке python на узлах.

текущий скрипт python вызывает импорт другого скрипта, который обычно находится в одном каталоге и отлично работает, когда он не работает на hadoop.

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

ответ

0

Хорошо, я подумал об этом.

Проблема, с которой сталкивается процесс python, заключается в том, что HDFS использует символические ссылки. Python, с другой стороны, не принимает символические ссылки как допустимые файлы, поэтому не будет импортироваться из них, если в том же каталоге.

Вместо добавления каждого файла в распределенный кэш вы можете добавить каталог в кэш, тогда любые вызовы в каталог через символическую ссылку, но вызовы в файлы затем находятся в фактическом каталоге, что позволяет процессу python импортировать библиотеки