2016-07-08 8 views
1

WindowsにインストールされているSparkRの下地ファイルを読み込もうとしています。私は、次のコマンド all_tweets <発行すると - コレクト(read.parquet(sqlContextを、 "HDFS:// localhostを:9000/orcladv /インターネット/ rawtweetsは"))WindowsのSparkR

私はisStatic =(invokeJavaでエラー エラーが出ますFALSE、objId $ id、methodName、...): java.lang.AssertionError:アサーションに失敗しました。定義済みのスキーマが見つかりませんでした。ファイル/ C:/ Users/xxxxx/Documents/hdfs:/ localhost:9000/orcladv/internet/rawtweetsです。それはHDFSであると/ユーザー::/ C:それはファイルを接頭辞なぜ

at scala.Predef$.assert(Predef.scala:179) 

は私はわからない// localhostを:9000

助けてください..

おかげ

Bala

+0

あなたには無関係かもしれませんが、おそらく有用です。collect()の使用については慎重にしてください。 Parquetファイルから直接Spark DataFrameにデータを取得してみてください。 collect()を使用すると、Spark DataFrameを吹き飛ばし、R data.frameを作成しました。このR data.frameは1つのスレッドで処理されます。 Sparkの分散処理能力は使用しません。逆に、コードからcollect()を削除すると、クラスタ全体でマルチスレッドで処理されるSpark DataFrameが作成されます。あなたのデータセットがR data.frameで扱えるほど小さい場合は、なぜSparkを使用するのですか? – SpiritusPrana

+0

ありがとう、SpiritusPrana。はい、私は収集の使用の意義を理解しています。この場合のビジネスロジックでは、論理が個別の行で処理されているので、私はcollect()関数を使用することはできません。それは他の行からの情報を理解する必要はなく、その意味で行は相互に排他的です。しかし、Spark ** R **を何度も使用すると、一連のデータフローを操作する必要があります。これは、実行中の分析プロセスの種類が原因である可能性があります。あなたの注意をもう一度おねがいします。この場合、私は間違いなくcollect()を取り除くことができます –

答えて

0

this postは役に立ちますか?これは関連していると思われ、正しいhdfsパスを見つける方法の手がかりを提供します。

"localhost"をcore-site.xmlファイルのfs.defaultFSの値に変更します。

hdfsパスが無効な場合、Sparkはローカルファイルシステムで検索する必要があると見なしているようです。

+0

私は運もこれも試しました。驚くべきことは、a)LinuxベースのHadoop/Spark環境で同じコードが動作することb)hdfs://の前にパスがどこにあるか。 –

+0

all_tweets < - read.parquet(sqlContext、 "hdfs:/// localhost:9000 // orcla 16/07/12 00:57:30情報parquet.ParquetRelation:hdfsのリスト:// localhost:9000/C:/ドライバの/ install/spark-1.6.1-bin-hadoop2.6/bin/hdfs:/ localhost:9000/orcladv/internet/rawtweets 16/07/12 00:57:30エラーr.RBackendHandler:parquet on 5 failed invokeJavaのエラー(isStatic = FALSE、objId $ id、methodName、...): java.lang.AssertionError:アサーションに失敗しました:定義済みのスキーマが見つかりませんでした。また、寄木細工のデータはありません。hdfs:// localhost:9000/C:/installs/spark-1.6.1-bin-h adoop2.6/bin/hdfs:/ localhost:9000/orcladv/internet/rawtweets –