2016-09-23 3 views
-1

1,2,3,4 ....から4.096Bまでをテキストファイルに書きたいとしましょう。それを行うには時間効率的な方法があります。それを順番にやっていくのは長い時間がかかります。だから分散された方法があるのだろうか。4Bの整数をテキストファイルに入力する効率的なアルゴリズムは何ですか

+0

なぜこれが投票されたのですか? – Ankit

+1

これを1つのファイルに書き込む場合は、配布が難しいでしょう。私はあなたが複数のファイルを書くことができ、それらを一緒にコピーできると思います。しかし、コピーするステップが単にそれを逐次的に書いているのと同じ時間を取るだけではないかどうかは疑わしい。 – Thilo

+1

ループ内の数値をファイルに書き込むと、CPUの束縛ではなく、ドライブ上のI/Oが最大になります。したがって、これは並列化するのが難しいでしょう(複数のドライブ上の複数のファイルに書いても問題がなければ)。 – Thilo

答えて

0

私の質問に対するあなたのコメントのおかげで、それは、私がこの問題を妥当な時間内に解決するのを助けました。ここに私がやったことだ -

- 以下のような4296行でハイブクエリを書くのHadoop
  • にこのファイルをアップロード1000000

  • -

    • が0から百万の整数を作成するために、Excelを使用してファイルを作成します。
      a0 = SELECT IPDecimal + (100000 * 1) + 1 AS IPDecimal FROM @file; 
      a1 = SELECT IPDecimal + (100000 * 2) + 1 AS IPDecimal FROM @file; 
      . 
      . 
      . 
      a4295 = SELECT IPDecimal + (100000 * 4295) + 1 AS IPDecimal FROM @file; 
      
    • 上記の各SELECT文の結果を別々のファイルに出力し、4296個のファイルの整数を1つのファイルに統合する

  • +0

    最後のステップだけでは、最初に1台のマシン上の1つのファイルにすべての数値を書き込むよりも大幅に時間がかかりません。 – Thilo

    +0

    それはまったくありません。各ファイルのデータはMB単位であったため、数分で完成しました。そして、ファイルはクラスタ上にありました。 – Ankit

    +0

    そして、そのサイズのローカルファイルを書くには "分"以上かかるのですか? – Thilo

    関連する問題