私はローカルPCにマスタを持っており、2つのサーバをワーカーとして使用しています。 Sparkプログラムを起動すると、まず入力ファイルをインポートする必要があります。正しい入力(現在)のために、私は自分の入力ファイルをマスターと両方の作業者のハードディスクに保存する必要があります(パスは同じでなければなりません)。つまり、同じデータセットを3つの異なる場所に配置する必要があります。どのように私はこれを避けることができ、入力エラーを取得することなく、独自の場所に私のデータセットを格納する?スパーク、入力ファイルへのパス
答えて
これを実行するには、HDFS(Hadoop)などの分散ファイルシステムを使用する必要があります。ファイルの読み込みの2つの例は次のとおりです。
tweets = sc.textFile("hdfs://scrapper.ccs.neu.edu/user/cbw/a1_tweets.txt") # load data from HDFS
words = sc.textFile("hdfs://scrapper.ccs.neu.edu/user/cbw/words*.txt") # load data from HDFS
最初のものは、従来のファイル読み込みで、二番目は、複数のファイルを読み込むようになります*を(ちょうどのような持ちながら、 wholeTextFiles)。
HDFSでファイルを参照する場合は、ホスト名(scrapperなど)を含む完全修飾URLを指定する必要があります。
HDFSのデータはブロックに格納され、すべてのデータノードに格納されます。このファイルシステムに関するメタデータは、ネームノードに格納されます。したがって、データを異なるノードに分散させることになります。また、hadoopはノード間でブロックを送信するタイミングと方法を気にします。
sparkの実行時にHDFSとHADOOP_HOMEが正しく設定されていれば、HDFSがデフォルトのFSになるため、完全なURLは必要ありません。 –
本当、忘れました。念押し有難う! – JorgeGlezLopez
一般的な点は、すべてのワーカーノードから見えるファイルシステムを持つことです。
Sparkは、Hadoop分散ファイルシステム(MapFS)、MapR-FS(MapR-FS)、Cassandra、OpenStack Swift、Amazon S3、Kudu(hereから取得)など幅広い種類のインターフェースが可能です。
ローカルファイルシステムは、前述のようなオプションの1つです。すべてのワーカーに複数のコピーがあります。 「ローカル」ファイルシステムを使用するもう1つのケースは、ネットワークドライブをマウントするか、NASまたはSANのようなものを使用することです。
これらのアプローチのすべて
は、入力ファイルにちょうど別のURIを必要とするが、すべてがシンプルなコールsc.textFile("protocol://path/to/a/file");
使用分散ファイルシステムで終わりますか? – zero323
ファイルをhdfsに置き、そこからspark-jobでロードします。 – Mahendra
@ zero323、Mahendra、ありがとうございます – Guforu