2017-04-24 15 views
1

DocumentDBを使用したいが、PySpark用のコネクタがない。 DocumentDBもMongoDB Protocol as mentioned hereをサポートしているように見えます。つまり、既存のMongoDBドライバはすべて動作するはずです。 PySpark connector for MongoDBがあるので、私はこれを試してみたかった。Azure DocumentDB with MongoDB Protocolスパークインテグレーション

df = spark.read.format("com.mongodb.spark.sql.DefaultSource").load() 

これはエラーをスローします。

com.mongodb.MongoCommandException: Command failed with error 115: ''$sample' is not supported' on server example.documents.azure.com:10250. The full response is { "_t" : "OKMongoResponse", "ok" : 0, "code" : 115, "errmsg" : "'$sample' is not supported", "$err" : "'$sample' is not supported" } 

DocumentDB MongoDB APIはMongoDBのすべての機能をサポートしていないようですが、ドキュメントは見つかりません。あるいは私は何か他のものを逃していますか

答えて

3

DocumentDBを使用したいが、PySpark用のコネクタはありません。

pyDocumentDB package含む)Spark to DocumentDB connectorのプレビュー4月上旬に利用できるようになりましたDocumentDBはまた、すべての既存のMongoDBドライバが動作するはず意味し、MongoDB Protocol as mentioned hereをサポートしていますように

2017年には見える

DocumentDBは通信のためのMongoDBワイヤプロトコルをサポートしており、そのバージョンをMongoDB 3.2.0として報告していますが、これはすべてのMongoDBの機能を完全にサポートしていますDocumentDBが同じ動作と制限を持つ機能を実装していること)。現時点で注目すべき欠点は、MongoDBの集約パイプラインのサポートであり、$sampleオペレータは、PySparkコネクタがMongoDB 3.2であると主張しているサーバに接続されていると期待していることを期待しています。

あなたの質問で参照したDocumentDB API for MongoDBドキュメントのコメントに、潜在的な互換性の問題の例があります。

+0

回答ありがとうございます。それが私の考えでもあります。 – chhantyal

+0

'PyDocumentDB'で使用するだけでは十分ではありません。 docsで与えられた例によれば、DataFrameを作成する前に明示的にメモリ内のPythonデータ型に変換する必要があるため、大量のデータでは機能しません。 – chhantyal

+0

@chhantyal大量のデータを扱うには、スライスごとに多くのデータフレームを照会し、['union'](http://spark.apache.org/docs/latest/api/python/pyspark.sql.html)を使用するのがよいでしょう。 #pyspark.sql.DataFrame.union)メソッドを使用して、すべての小さなサイズのデータ​​フレームを含む新しいデータフレームを生成します。 –

関連する問題