ftpを使ってApache Spark(Scala版)のリモートマシン上のファイルを読み込もうとしています。現在、私はGitHubのDatabricksのLearning Sparkレポの例に従っています。カールを使用して、私はファイルをダウンロードすることができるので、私が使用するパスが存在します。ftpを使ってApache Sparkのリモートマシン上のファイルを読む
以下は、私が実行しようとするコードの抜粋です:
var file = sc.textFile("ftp://user:pwd/192.168.1.5/brecht-d-m/map/input.nt")
var fileDF = file.toDF()
fileDF.write.parquet("out")
データフレーム上のカウントを実行しようとした後、私は次のスタックトレース(http://pastebin.com/YEq8c2Hf)を取得:
org.apache.spark.sql.catalyst.errors.package$TreeNodeException: execute, tree:
TungstenAggregate(key=[], functions=[(count(1),mode=Final,isDistinct=false)], output=[count#1L])
+- TungstenExchange SinglePartition, None
+- TungstenAggregate(key=[], functions=[(count(1),mode=Partial,isDistinct=false)], output=[count#4L])
+- Project
+- Scan ExistingRDD[_1#0]
...
Caused by: org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: ftp://user:[email protected]/brecht-d-m/map/input.nt
をIだろうファイルが到達不能であると仮定しますが、これはcurlでファイルを取得できることと矛盾しています。
curl ftp://user:[email protected]/brecht-d-m/map/input.nt
端末上の特定のファイルが表示されます。私はScalaコードで何が間違っているのか分かりません。上記のコードスニペットにエラーがありますか、それとも完全に間違っていますか?事前に
おかげで、 ブレヒト
注:予想通り
があるため、(パス全体(/home/brecht-dm/map/input.nt)も動作しませんを指定しますこれはcurlではうまくいきません; "サーバーは指定されたディレクトリへの変更を拒否しました")。これをSparkで試してみると、seekがサポートされていないというIOExceptionが発生します(http://pastebin.com/b9EB9ru2)。
ローカルで作業すること(例:sc.textFile( "/ home/brecht-d-m/map/input.nt"))は完全に機能します。
特定のファイルに対するファイルのアクセス許可は、すべてのユーザーに対してR + Wに設定されています。
ファイルサイズ(15MB)は問題にならないはずであり、はるかに大きなファイルを処理できるはずです。
ソフトウェアバージョン:スカラ座2.11.7、Apacheのスパーク1.6.0、Javaの1.8.0_74は、Ubuntu 14.04.4
「[リモートロケーション(ftp)からApache Sparkでcsvファイルを読み込む]」(http://stackoverflow.com/questions/34479895/read-csv-file-in-apache-spark-from-remote-location) -ftp) – user1314742