2017-01-03 9 views
0

sqlContext.read.json("...path.to.file...")Выполняется ли синтаксический анализ PySpark JSON в Python или JVM?

Я пишу скрипт Spark в Python, используя pyspark. Выполняется ли JSON-анализ в Python или JVM? Если Python, использует ли это расширение C simplejson или является родным Python?

Я делаю лот анализа JSON, так что производительность здесь важна.

ответ

2

JSON-синтаксический анализ выполняется в JVM, и это самый быстрый способ загрузки jsons в файл.

Но если вы не укажете схему до read.json, тогда искра будет исследовать все входные файлы, чтобы найти схему «надмножества» для 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. Это означает, что JSS-анализ будет выполняться JVM.