Ошибка _corrupt_record при чтении JSON файла в Spark

У меня есть этот файл JSON

{
    "a": 1, 
    "b": 2
}

который был получен с помощью метода python json.dump. Теперь я хочу прочитать этот файл в DataFrame в Spark, используя pyspark. Следуя документации, я делаю это

sc = SparkContext()

sqlc = SQLContext (sc)

df = sqlc.read.json('my_file.json')

print df.show()

Оператор печати выплевывает это, хотя:

+---------------+
|_corrupt_record|
+---------------+
|              {|
|       "a": 1, |
|         "b": 2|
|              }|
+---------------+

Кто-нибудь знает, что происходит и почему он не интерпретирует файл правильно?

Ответ 2

Если вы хотите оставить свой JSON файл таким, каким он есть (без удаления новых символов строк \n), включите multiLine=True аргумент ключевого слова

sc = SparkContext() 
sqlc = SQLContext(sc)

df = sqlc.read.json('my_file.json', multiLine=True)

print df.show()

Ответ 3

Добавление к @Bernhard отличному ответу

# original file was written with pretty-print inside a list
with open("pretty-printed.json") as jsonfile:
    js = json.load(jsonfile)      

# write a new file with one object per line
with open("flattened.json", 'a') as outfile:
    for d in js:
        json.dump(d, outfile)
        outfile.write('\n')