EPIPE (Сломанная труба) с искровым действием

Я пытаюсь запустить искровое приложение с помощью пряжи. Приложение использует pipe() действие для запуска локальной программы php. Дело в том, что каждый раз, когда запускается процесс PHP, он получит SIGPIPE подайте сигнал через 1 минуту (после успешной обработки нескольких записей) и прекратите работу.

PS: та же программа может работать без проблем на автономной среде env, но работает неправильно в рабочей среде env, которая является кластером.

Кто-нибудь может помочь, какова возможная причина? Благодарю.

write(1, "success\te10489280713f60626d15d20"..., 34564) = 26372
--- SIGPIPE (Broken pipe) @ 0 (0) ---
write(1, "ang__meta\":{\"value\":\"empty\",\"gro"..., 8192) = -1 EPIPE >(Broken pipe)
--- SIGPIPE (Broken pipe) @ 0 (0) ---
--- SIGTERM (Terminated) @ 0 (0) ---

код как показано ниже:
Скала сторона:

def main(args: Array[String]): Unit = {
    if (args.length < 2) {
      sys.exit(1)
    }
    val dt_src = args(0)
    val limit = args(1)
    var sql = s"SELECT * FROM db_dw.table_input_json  WHERE dt='${dt_src}'"
    val limit_str = s" LIMIT ${limit}"
    if (limit != "0") {
        sql = sql + limit_str
    }
val df = sqlContext.sql(sql)
var rdd = df.map(r =>  r.getAs[String]("json_str")).pipe("/home/work/software/php56/bin/php ./yiic php_file index"
}

Сторона PHP:

public function actionIndex()
{
while ($line = fgets(STDIN)) {
         list($success, $json_str,$message) = $this->_handle($line);
         if(!$success) {
             echo "fail" . "\t"  . $message . "\n";
             continue;
         }
          echo "success" . "\t"  . $json_str . "\n"
}

0 ответов

Другие вопросы по тегам