2017-08-03 16 views
2

私はApache SparkでScalaのAzure CosmosDBコネクタを使って遊んでいます。私のCosmosDBのコレクションにDataFrameを書き込む方法についての例や洞察があれば疑問に思っていました。現在、私は自分のコレクションに接続してデータを返して操作することができますが、結果を同じデータベース内の別のコレクションに書き戻したいと思います。Apache Spark Scala CosmosDBコネクタデータベースに戻る

書き込み先のEndPoint、MasterKey、Database、およびCollectionを含むwriteConfigを作成しました。

次に、次の行を使用してコレクションに書き込もうとしました。

manipulatedData.toJSON.write.mode(SaveMode.Overwrite).cosmosDB(writeConfig) 

これはうまく動作し、エラーは表示されませんが、コレクションに何も表示されません。

私はhttps://github.com/Azure/azure-cosmosdb-sparkにあるドキュメントを調べましたが、データをデータベースに書き戻す例はほとんど見つかりませんでした。

私がやっていることよりもdocumentDB/cosmosDBに書き込む方が簡単な場合は、私は任意のオプションに開放されています。

ありがとうございました。

答えて

3

注意したように、Spark DataFrameから直接Cosmos DBに保存することができます。あなたは、例えば、toJSONを使用する必要はないかもしれない:ドキュメントについては

// Import SaveMode so you can Overwrite, Append, ErrorIfExists, Ignore 
import org.apache.spark.sql.{Row, SaveMode, SparkSession} 

// Create new DataFrame `df` which has slightly flights information 
// i.e. change the delay value to -999 
val df = spark.sql("select -999 as delay, distance, origin, date, destination from c limit 5") 

// Save to Cosmos DB (using Append in this case) 
// Ensure the baseConfig contains a Read-Write Key 
// The key provided in our examples is a Read-Only Key 
df.write.mode(SaveMode.Append).cosmosDB(baseConfig) 

、あなたはセーブ機能という点で正確であるより良いアウトと呼ばれている必要があります。私はこれに対処するためにInclude in User Guide/sample scripts how to save to Cosmos DB #91を作成しました。

保存に関してはエラーは見られませんが、設定によっては読み書き可能キーの代わりに読み取り専用キーを使用していますか?私はちょうど同じ問題を呼び出すSaving to CosmosDB using read-only key has no error #92を作成しました。

関連する問題