2017-10-27 8 views
0

をspark_read_parquet ...mclapplyと私はフォーラムへのアクティブなユーザーとしては比較的新しいですが、私は何年以来の答えを探してきたので、あなたにすべての最初のあなたの貢献に感謝してい

今日、私は質問誰もそれを持っています...

テストシステムの一部として、s3(AWS)からspark(ローカルコンピュータ)にファイルを並行して読み込もうとしています。 1つのコアは、それが失敗した多くのことを設定したとき、私は... mclapply使用しますが、している

例:(2を使用した場合と同じコードが一つのコアを使用した場合に動作しますが、失敗した)

new_rdd_global < - mclapply (配列(file_paths)、関数(I){spark_read_parquet(SC、名前= paste0( "RDD _"、I)、パス= file_paths [I])}、mc.cores = 1)

new_rdd_global < - mclapply(警告メッセージ: mclapply(seq()に、seq(ファイルパス)、関数(i){関数名、パス名= paste0( "rdd_"、i)、パス=ファイルパス[i])}、mc.cores = file_paths)、f慰め(I){:ユーザーコード

任意の提案で すべてのスケジュールのコアに発生したエラー???

ありがとうございます。

+0

質問を明確にしてください。あなたが求めていることはまったくわかりません。また、達成しようとしていることについて簡単な説明を追加することもできます。 –

+0

私はさまざまなdirsに格納されているたくさんの寄木細工ファイルを持つs3aバケットからの読みを並列化しようとしています。この場合、 "file_paths"はフルネームパスのリストを持つ変数であり、それ以上のことはありません。概念的には単純ですが、ファイルを並列で読み込めるかどうかはわかりません。 –

答えて

0

1つのテーブルにすべてを1 spark_read_parquet()コールで読み込むと、この方法でSparkが並列化を処理します。別のテーブルが必要な場合は、データがどのファイルから来たのかを示す列があると仮定して後で分割することができます。一般的には、Rでスパークを使用するときはmcapply()を使用する必要はありません。

+0

は、私はそれを実行しようとしましたが、一度に複数のパスを渡ししようとするとspark_read_parquet()が警告を投げている: spark_read_parquet(SC、「rdd_new」、as.list(file_paths))に加えて :警告メッセージ: if(grepl( "[a-zA-Z] +://"、path)){: 条件の長さが1より大きく、最初の要素のみが使用されます –

+0

複数のフォルダ正規表現では、spark_read_parquet()はパスのリストを渡すことはできないようです。出来ますか??? –

+0

フォルダ内のデータはまったく同じ構造ですか?その場合は、ワイルドカード文字を使用して必要なフォルダをポイントし、1回の呼び出しですべてのデータを読み取ることができます。 –

関連する問題