2016-05-02 17 views
0

Windows 7でPython 2.7でSpark 1.6.1を実行しています。 HDFSのルートスクラッチディレクトリ:/ tmp/hiveは書き込み可能で、現在の権限は次のとおりです:rwxrwxrwx(winutilsツール)。Windows 7のSparkでディレクトリをストリーミングする

ディレクトリからファイルをストリーミングしたい。ドキュメントによると、関数textFileStream(ディレクトリ):

は、新しいファイル用のHadoop互換ファイルシステム を監視し、テキストファイルとしてそれらを読み込む入力ストリームを作成します。同じファイルシステムの 内の別の場所からファイルを「移動」することによって、ファイルを に監視する必要があります。ファイル名はで始まる。無視されます。私はスパークストリーミングコマンドを起動すると

lines = ssc.textFileStream(r"C:/tmp/hive/") 
counts = lines.flatMap(lambda line: line.split(" "))\ 
        .map(lambda x: (x, 1))\ 
        .reduceByKey(lambda a, b: a+b) 
counts.pprint() 
ssc.start() 

をして、私のディレクトリにストリーミングするためのファイルを作成し、何も起こりません。

は私もこれを試してみました:

lines = ssc.textFileStream("/tmp/hive/") 

とHDFSパス関連ですが、何が再び起こらない

lines = ssc.textFileStream("hdfs://tmp/hive/") 

私は間違っていますか?

答えて

0

Windowsのディレクトリとして「file:/// C:/ tmp/hive」を使用してみてください.Spark 1.6.3を使用してWindows 8で動作しましたが、ファイル名と内容を少し前にそれを機能させた。私は他のパスでも試しましたので、どのようにwinutitsにも関係のないパスでも同じように動作することを確認できます。そこにあなたのデータがあるなら "file:/// D:/ someotherpath"を使うことができます

私は監視されたディレクトリにファイルを持っていました。ある時点で私の変更に反応しなくなり、結果が一貫していないように拾い上げられました。ウィンドウズのことだと思う。

私はそれがうまくいくことを知っています。忍耐する必要があり、それが拾われる前にいくつかの名前の変更を試みなければなりませんが、それは明らかにそれがうまくいくことを証明するだけです。

私がやっていたもう一つの事は、ファイル中でWindows eofの代わりにUnix eofを使用していますが、それが必要であると主張することはできません。

関連する問題