Я читаю журналы (которые находятся в сжатом файле .gz
) из исходного сегмента S3..gz
файлы присутствуют в папке внутри корзины s3, которая выглядит следующим образом (папка создается на основе времени эпохи Unix, 1 папка в день)
1540684800000 (1 folder/day contains multiple .gz file)
1541462400000
1542240000000
1543104000000
Теперь мне нужно запустить код Python нижесделайте эти .gz
файлы в правильном формате массива json.Данные и структура внутри одного файла .gz
указаны ниже.В массиве json отсутствуют внешние скобки [] и запятая (,) между двумя массивами json (после "version":2
}).Существует новая строка (\n
), разделяющая две записи массива json.
{"context":"abc","event":"login","timestamp":"2018-09-27T17:35:55.835Z","version":2}
{"context":"def","timestamp":"2018-09-27T17:35:55.835Z","Id":"faf91826-ebc9-4242-996f-d52969bec2d5","version":2}
{"context":"xyz","event":"LandingPage","timestamp":"2019-01-21T05:14:22.998Z","Id":"88016b33-72d7-458e-8de8-f76241f4b681","version":2}
На данный момент я вручную распаковал файлы .gz
и затем переименовал их в .json
(с помощью команд unix).).И будет работать под кодом Python, чтобы сделать эти файлы в правильном формате json -
import json
import pandas as pd
import glob
import os
import re
for subdir, dirs, files in os.walk ('/user/home/src/'):
for file in files:
path = subdir + os.sep + file
if not(path.endswith('.DS_Store')):
print(file)
jsonFile = open(path,"r")
text = jsonFile.read()
jsonFile.close()
#working with buffered content
#text = "["+text+"]"
pattern = re.sub(r'}(\s*){', r'},\1{', text)
## Save changes to JSON file
jsonFile = open(path, "w+")
data = "["+json.loads(json.dumps(pattern))+"]"
jsonFile.write(data)
jsonFile.close()
Мне нужно локально скопировать исходные файлы .gz
и запустить над кодом Python, чтобы сделать их в правильном формате массива json и загрузитьони нацелены на ведро s3.Я новичок в Python и нуждаюсь в помощи -
a) Как я ежедневно синхронизирую источник s3 bucket на локальном и запускаю код python только на вновь добавленной папке (внутри локальной копии).И ежедневно загружайте новую папку в целевую корзину s3.
b) как я могу удалить / удалить записи JSON с отсутствующим атрибутом «событие» (в данном случае вторая запись), в то время как я конвертирую файл в соответствующий массив JSON.
c) могу ли я добавить записи json из нескольких файлов .gz и иметь один массив json (с расширением .json).Так что у меня есть один файл .json на каждый день.
Ожидаемый вывод в файле json:
[{"context":"abc","event":"login","timestamp":"2018-09-27T17:35:55.835Z","version":2},
{"context":"xyz","event":"LandingPage","timestamp":"2019-01-21T05:14:22.998Z","Id":"88016b33-72d7-458e-8de8-f76241f4b681","version":2}]