Hadoop произвольно урезает строки длиной 256 512 1024 символовLinux

Ответить Пред. темаСлед. тема
Anonymous
 Hadoop произвольно урезает строки длиной 256 512 1024 символов

Сообщение Anonymous »

Это мой первый пост, поэтому прошу прощения за путаницу. Я пытаюсь провести анализ последовательности ДНК с помощью Map Download. Вот важные части моего сценария Mapper.sh:
во время чтения строки
выполняйте
echo "[$(date)] $HOSTNAME Запуск megacc_cr с входными данными: $line" >> ${TMP_LOG_FILE

Код: Выделить всё

# Execute megacc_cr and capture the output and exit status
result=$(./megacc_cr $line --map-reduce-bootstrap)
status=$?

# Trim whitespace from the result
result=$(echo "$result" | xargs)
# Further cleaning up the spaces,tabs, etc. from the result
result=$(echo "$result" | tr -d '[:space:]')
# Log the trimmed result and status

# Output the trimmed result for Hadoop to process
if [ -n "$result" ]; then
echo "$result 1"
else
echo "[$(date)] **$HOSTNAME** Empty result detected." >> ${TMP_LOG_FILE}
fi
(Я уже проверил весь скрипт Mapper.sh на Shellcheck.net)
Основная ошибка здесь: result= $(./megacc_cr $line --map-reduce-bootstrap)[/b]
$line — это всего лишь некоторые параметры для анализа megacc, в данном случае $line равна «-a infer_NJ_нуклеотид.mao -d SpiderA.fas" (некоторые параметры не имеют отношения к проблеме).
Весь этот сценарий выполняется столько раз, сколько указывает пользователь, и каждый запуск выполняет/иллюстрирует отдельный анализ начальной загрузки. Когда я запускаю это локально, я получаю правильный результат:
Команда:
result=$(./megacc_cr_test -a infer_NJ_нуклеотид. mao -d SpiderA.fas --map-reduce-bootstrap:
echo "$result 1" >> output.txt

Вывод:
(((A_californicus_GMY190,SDSUMY1467_Aliatypus_gulosus),((((Calommata_signata_MY4703,(Atypus_karschi_MY4706,(Sphodros_rufipes_MY032,Sphodros_abboti_MY026))),(((SDSUMY458 9_Hexurella,Hexurella_sp_MY1104),((((((calisoga_sp_MY4085,Bymainiella_sp_MY884) ,Namirea_sp_MY846),euagrus_sp_MY4295),Microhexura_sp_MY4016),Thelechoris_sp_MY050),(Hypochilus_kastoni_G2519,hypochilus_sp_H595))),CJG3438_Mecicobothrium_thorelli)),(SDSUMY4026_Megahexura) _fulva,megahexura_sp_MY4378)),(Hexura_picea_MY090,SDSUMY1125_Hexura_rothi))),(SDSUMY0120_Antrodiaetus_apachecus,SDSUMY4700_Antrodiaetus_roretzi),((A_hadros_MY459, SDSUMY0633_Antrodieatus_gertschi),(atypoides_sp_AR17,atypoides_sp_MY1253))); 1
((((A_californicus_GMY190,SDSUMY1467_Aliatypus_gulosus),((((Calommata_signata_MY4703,(Atypus_karschi_ MY4706,(Sphodros_rufipes_MY032,Sphodros_abboti_MY026))),( ((SDSUMY4589_Hexurella,Hexurella_sp_MY1104),((((((calisoga_sp_MY4085,Bymainiella_sp_MY884),euagrus_sp_MY4295),Namirea_sp_MY846),Microhexura_sp_MY4016),Thelechoris_sp_MY050),(Гипочилу s_kastoni_G2519,hypochilus_sp_H595))),CJG3438_Mecicobothrium_thorelli)),(SDSUMY4026_Megahexura_fulva,megahexura_sp_MY4378)),( Hexura_picea_MY090,SDSUMY1125_Hexura_rothi))),(SDSUMY0120_Antrodiaetus_apachecus,SDSUMY4700_Antrodiaetus_roretzi)),(A_hadros_MY459,SDSUMY0633_Antrodieatus_gertschi),(atypoides_sp_AR17,atypoides_sp_ MY1253)); 1
(((A_californicus_GMY190,SDSUMY1467_Aliatypus_gulosus),((((Calommata_signata_MY4703,(Atypus_karschi_MY4706,(Sphodros_rufipes_MY032,Sphodros_abboti_MY026))),(((SDSUMY 4589_Hexurella,Hexurella_sp_MY1104),((((( (calisoga_sp_MY4085, Bymainiella_sp_MY884), Namirea_sp_MY846), euagrus_sp_MY4295), Microhexura_sp_MY4016), Thelechoris_sp_MY050), (Hypochilus_kastoni_G2519, hypochilus_sp_H595))), CJG3438_Me cicobothrium_thorelli)),(SDSUMY4026_Megahexura_fulva,megahexura_sp_MY4378)),(Hexura_picea_MY090,SDSUMY1125_Hexura_rothi))),(SDSUMY0120_Antrodiaetus_apachecus,SDSUMY4700_Antrodiaetus_roretzi) ,((A_hadros_MY459,SDSUMY0633_Antrodieatus_gertschi),(atypoides_sp_AR17,atypoides_sp_MY1253))); 1
Каждая строка, оканчивающаяся на 1, представляет собой одну строку. Эти строки должны обрабатываться редуктором.sh как пары ключ/значение. Однако, когда я запускаю этот анализ через Hadoop, Mapper.sh выдает такие результаты:
(((A_californicus_GMY190,SDSUMY1467_Aliatypus_gulosus),((((Calommata_signata_MY4703,(Atypus_karschi_MY4706,(Sphodros_rufipes_MY032,Sphodros_ab boti_MY026 ))),(((SDSUMY4589_Hexurella,Hexurella_sp_MY1104),((((((calisoga_sp_MY4085,Bymainiella_sp_MY884),euagrus_sp_MY4295),Namirea_sp_MY846),Microhexura_sp_MY4016),Thelechoris_sp_MY050),(H ypochilus_kastoni_G2519,hypochilus_sp_H595))),CJG3438_Mecicobothrium_thorelli)),(SDSUMY4026_Megahexura_fulva, megahexura_sp_MY4378)),(Hexura_picea_MY090,SDSUMY1125_Hexura_rothi))),( 1
SDSUMY0120_Antrodiaetus_apachecus,SDSUMY4700_Antrodiaetus_roretzi),((A_hadros_MY459,SDSUMY0633_Antrodieat us_gertschi),(atypoides_sp_AR17,atypoides_sp_MY1253))); 1
(((A_californicus_GMY190,SDSUMY1467_Aliatypus_gulosus),((((Calommata_signata_MY4703,(Atypus_karschi_MY4706,(Sphodros_rufipes_MY032,Sphodros_abboti_MY026))),(((SDSUMY 4589_Hexurella,Hexurella_sp_MY1104),((((( (calisoga_sp_MY4085,Bymainiella_sp_MY884),euagrus_sp_MY4295),Namirea_sp_MY846),Microhexura_sp_MY4016),Thelechoris_sp_MY050),(Hypochilus_kastoni_G2519,hypochilus_sp_H595))),CJG3438_Me cicobothrium_thorelli)),(SDSUMY4026_Megahexura_fulva,megahexura_sp_MY4378)),(Hexura_picea_MY090,SDSUMY1125_Hexura_rothi))),(SDSUMY0120_Antrodiaetus_apachecus,SDSUMY4700_Antrodiaetus_roretzi) ,((A_hadros_MY459,SDSUMY0633_Antrodieatus_gertschi),(atypoides_sp_AR17,atypoides_sp_MY1253))); 1
Как видите, при анализе Hadoop первая строка обрезается до 512 символов, а вторая строка представляет собой оставшуюся часть первой строки, считая ее собственным ключом. И третья строка обрабатывается правильно. Гипотетически, если я выполняю 50 повторений начальной загрузки в Hadoop, около 5-8 из них будут усечены таким образом, в то время как остальные могут превысить 512 символов и дать правильный вывод начальной загрузки.
Мой Вопрос в том, почему это происходит, когда я просто запускаю этот анализ через Hadoop, в то время как он выдает правильный результат на локальном компьютере с Linux. Имеется 5 подчиненных узлов, и эта ошибка возникает без разбора и случайным образом на всех узлах.
Я также настроил сценарий Mapper.sh, чтобы он отправлял результат в файл на соответствующем локальном компьютере, который script был выполнен, затем эти файлы на локальном компьютере агрегируются в HDFS для анализа редуктора, и возникает та же ошибка, поэтому, похоже, проблема не в том, как Hadoop передает строки Newick.
Когда я запускаю этот анализ с очень большим набором данных ДНК, Hadoop без разбора усекает данные до 1024 символов вместо 512 символов, но для очень маленьких наборов данных это, похоже, не беспокоит. Например, он выдал правильный результат:
((orangutan,sumatran),((homo_sapiens,(шимпанзе,бонобо)),горилла),гиббон); 1
Пожалуйста, дайте мне знать, если потребуется дополнительная информация, и я буду признателен за любой ответ!

Подробнее здесь: https://stackoverflow.com/questions/787 ... rbitrarily
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»