2017-01-03 4 views
0

sqlContext.read.json("...path.to.file...")PySpark JSON構文解析はPythonまたはJVMで行われますか?

私はPythonでpysparkを使用してSparkスクリプトを作成しています。 JSON解析はPythonやJVMで行われますか? Pythonの場合は、Cのsimplejson拡張を使用していますか、それともPythonのネイティブですか?

JSON解析のロットを実行していますので、ここでパフォーマンスが重要になります。

答えて

2

JSON解析はJVMで行われ、jsonsをファイルにロードするのが最も高速です。

read.jsonにスキーマを指定しないと、sparkはすべての入力ファイルをプローブしてjsonsの「スーパーセット」スキーマを探します。パフォーマンスの問題のであれば、最初にそれらからスキーマを収集し、その後、サンプル文書と小さなJSONファイルを作成します。

schema = sqlContext.read.json("/path/to/small/file.json").schema 

を次にスキーマをspecyfyingあなたの大きなデータセットをロードします。

df = sqlContext.read.json("/path/to/big/dataset", schema=schema) 
+0

あなたはまた、手動でスキーマを設定することができます。多くの場合、フィールドのサブセットを設定し、スキーマを構築し、そのスキーマを直接提供できるように、すべてのフィールドが本当に必要なわけではありません –

+0

私のコードでは、実際に 'sqlContext.read.schema(...) .json(...) '。私はここで例を単純化しました:)ありがとう! –

0

sqlContext.read.jsonを実行すると、これはシーンの背後でscalaコードによって評価される式に変換されます。これは、json解析がJVMによって行われることを意味します。

関連する問題