2017-01-16 3 views
1

私はHDFSディレクトリに複数の圧縮ファイルがあるアプリケーションを持っています。 RDDを作成したいと思います。各タスクはzipファイルの内容で動作します。現時点では、ファイルの名前からRDDを作成し、HDFSクライアントライブラリを使用して各タスク内でzipファイルの内容を読み込みます。Sparkの各タスクにzipファイルの内容を割り当てる方法は?

しかし、私はこのようにしたくありませんが、代わりにタスクに自動的にzipファイルの内容が割り当てられます。この方法では、計算タスクがzipファイルを含むノードに移動するため、私の現在のアプローチではデータを計算タスクに持ち込みます。これは、タスクがzipファイルを読み取る必要があるかもしれないことを意味します他のノードで配布されます。

答えて

1

あなたはHadoopのRDDのAPI(サンプルPySparkコード)を使用することができます。

newconf = {"mapred.input.dir": <<DIRECTORY>>}       
    hadoopRdd01 = sc.newAPIHadoopRDD("org.apache.hadoop.mapreduce.lib.input.TextInputFormat", 
           "org.apache.hadoop.io.Text", 
           "org.apache.hadoop.io.Text", 
           conf=newconf) 

あなたはジップ/ GZを使用している場合、ファイルは分割されないそのようにそれぞれジップがにロードされたタスク&に入力されますパーティション。

関連する問題