Как использовать pyspark для исправления искаженного JSON перед его чтением в информационный фрейм - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь прочитать дамп MongoDB в фрейм данных.Дамп в формате JSON, за исключением элемента Date .Вот пример JSON:

{
	"_id": {
		"$binary": "AAAB92tW4kSWbIyLJj/zWg==",
		"$type": "03"
	},
	"_t": "VisitData",
	"ContactId": {
		"$binary": "qc4p+OQsEUumAtDWxvSZuA==",
		"$type": "03"
	},
	"StartDateTime": Date(1541452223793),
	"EndDateTime": Date(1541452682373),
	"SaveDateTime": Date(1541453891548),
	"ChannelId": {
...

Я хотел бы получить дату в допустимом формате, чтобы я мог правильно перечитать ее в кадр данных.

Я попытался прочитать файл как одну большую строку, но это с треском провалилось, так как я считаю, что файл слишком большой.Я также попытался прочитать его как CSV, который работает настолько, насколько он создает фрейм данных, но столбцы повсюду, и я не уверен, что с ним делать после этого, чтобы получить действительный JSON,К тому же, это просто неправильный путь.

По сути, я не уверен, как выполнить предварительную обработку файла в pyspark.Предложения по правильному способу сделать это крайне необходимы.

1 Ответ

1 голос
/ 15 мая 2019

Я бы порекомендовал вам исправить эту искаженную часть Date в надлежащий формат JSON с помощью более чистого скрипта на python, а затем использовать spark.read.json (путь) для чтения в фиксированном файле JSON (если вы собираетесь использовать pyspark) ,

Я не знаю, насколько велик этот дамп данных, но для очистки вы, вероятно, захотите сделать что-то вроде этого: https://stackoverflow.com/a/18515887/11388628

Вы можете использовать readline (), чтобы прочитать в вашем искаженном json:

output = open("path\\filename.json","r")
output.readline()

При необходимости очистите, сохраните новый JSON, затем прочитайте его в pyspark с помощью spark.read.json (path).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...