2017-10-24 19 views
1

私は、cassandraテーブルのデータを取得してファイルシステム(Linuxファイルシステム)に保存する必要があります。csvファイルにspark rddを保存する方法

ファイルを複数のノードに分割しないでください。単一のノードに作成する必要があります。

スパークモードで動作する4つのノード(データストア)のcassandraクラスタがあります。 DSEのバージョン:5.0.1 スパークバージョン:1.6.1

Hereis私のサンプルコード:

val sc = new SparkContext(conf) 
val sqlContext1 = new CassandraSQLContext(sc); 
sqlContext1.setKeyspace("KeyspaceName"); 
val results = sqlContext1.sql("SELECT * FROM KeyspaceName.TableName"); 
results.collect().foreach(println); 

今すぐ結果RDD。単一のノードでローカルファイルシステム(linux)に保存する必要があります。

私はいくつかのブログに従いましたが、うまくいきませんでした。これを解決するためのガイドがありますか?

答えて

0

出力場所は、スパーククラスタ内のすべてのノードからアクセスできる必要があります。場所をネットワークフォルダとしてマップし、出力場所として指定することができます。

Scalaの2.11
とスパーク2+
results.write.csv(path_to_network_folder)

スパーク1.6とても似https://github.com/databricks/spark-csvから依存spark-csvを追加します。
libraryDependencies += "com.databricks" % "spark-csv_2.11" % "1.5.0"


コードは次のようになります: results.write.format("com.databricks.spark.csv").save(path_to_network_folder)

+0

私はcsvファイル機能を使用して試してみましたが、それは以下のエラーを投げています。.. スカラ>輸入org.apache.spark.sql.DataFrameWriter 輸入org.apache.spark.sql.DataFrameWriter スカラ>結果.write.csv( "ファイル://home/cassandra/test.csv") :85:エラー:値CSVがorg.apache.spark.sql.DataFrameWriter results.write.csvのメンバーではありません(」ファイル://home/cassandra/test.csv ") –

+0

ああ、申し訳ありませんでしたが、あなたはスパーク1.6.1を使用していました。 csv関数はSpark 2.0で導入されました。アップグレードできない場合は、https://github.com/databricks/spark-csv – buubovich

+0

sbtを使用している場合は、ライブラリ「libraryDependencies + =」comをインポートしてください。 databricks "%" spark-csv_2.11 "%" 1.5.0 "'。あなたのコードは次のようになります: 'results.write.format(" com.databricks.spark.csv ")。save(path_to_network_folder)' – buubovich

関連する問題