データを集約し、マップ ジョブから http POST 経由でリクエストを送信するプロセスがあります。結果を待たなければなりません。残念ながら、このアプローチでは問題が発生します。
その場合、送信中にデータが失われます。この問題を調査したところ、通信によってソケットが「破棄」され、データが失われることが判明しました。マッパーから http POST リクエストを実行した経験のある人はいますか?何に注意する必要がありますか?
サンプルコード; マッパー:
public void map(final LongWritable key, final Text value, Context context) throws IOException {
        String someData = value.toString();
        buffer.add(someData);
        if (buffer.size() >=  MAX_BUFFER_SIZE) {
                emit(buffer);
            }
        }
    }
「発行」では、データをシリアル化し(これは問題ありません。これを数回テストしました)、後で送信します。差出人:
byte[] received = null;
    URL connAddress = new URL(someComponentToBeAdressed);
    HttpURLConnection urlConn;
    urlConn = (HttpURLConnection) connAddress.openConnection();
    urlConn.setDoInput(true);
    urlConn.setDoOutput(true);
    urlConn.setRequestMethod("POST");
    urlConn.setRequestProperty("Content-type", "text/plain");
    urlConn.getOutputStream().write(serialized_buffer);
    urlConn.getOutputStream().flush();
    urlConn.getOutputStream().close();
    received = IOUtils.toByteArray(urlConn.getInputStream());
    urlConn.disconnect();
前もって感謝します