Импорт (частичный) JSON-файла в R - PullRequest
0 голосов
/ 08 октября 2019

У меня есть огромный файл JSON.gz (gzipped, около 700 ГБ), который разделен. Я применил lapply и jsonlite для импорта данных, но мне нужен эффективный способ для этого.

После преобразования json в список, а затем преобразования некоторых из них в dataFrame, структура выглядит так: json to dataFrame Image

> head(df)
                                     userName                    transactionId                                  drKey             requestTime networkVersion
1 BOj4o8hTNqu6xxljJIbX-ADj1la-6x3-AYGG9h4fpWk 0bccac808f984382aeb5a463d2186009 0bccac808f984382aeb5a463d2186009-10000 2019-07-17T03:34:13.064         190710
2 BOj4o8hTNqu6xxljJIbX-ADj1la-6x3-AYGG9h4fpWk 0bccac808f984382aeb5a463d2186009 0bccac808f984382aeb5a463d2186009-70000 2019-07-17T03:34:13.065         190710
3 BOj4o8hTNqu6xxljJIbX-ADj1la-6x3-AYGG9h4fpWk 0bccac808f984382aeb5a463d2186009 0bccac808f984382aeb5a463d2186009-20000 2019-07-17T03:34:13.064         190710
4 BOj4o8hTNqu6xxljJIbX-ADj1la-6x3-AYGG9h4fpWk 0bccac808f984382aeb5a463d2186009 0bccac808f984382aeb5a463d2186009-50100 2019-07-17T03:34:13.066         190710
5 BOj4o8hTNqu6xxljJIbX-ADj1la-6x3-AYGG9h4fpWk 0bccac808f984382aeb5a463d2186009 0bccac808f984382aeb5a463d2186009-50000 2019-07-17T03:34:13.065         190710
6 BOj4o8hTNqu6xxljJIbX-ADj1la-6x3-AYGG9h4fpWk 0bccac808f984382aeb5a463d2186009 0bccac808f984382aeb5a463d2186009-40000 2019-07-17T03:34:13.063         190710
  routePointCount routeDistance routeTravelTime routeLinkCount
1            1378         77192            5943            563
2            1115         87629            4074            272
3            1115         87629            4074            272
4            1250         81756            5493            467
5            1115         87629            4075            272
6            1115         87629            4075            272

Единственные данные, которые мне нужны, - это столбцы в первом и втором столбцах. Кроме того, требуется только «уникальная» строка, основанная на значении второго столбца.

В настоящее время файл json читается, преобразуется в list и dataFrame, а данные извлекаются с помощью функции «duplicated (or unique)» из второго столбца. Однако этот метод потребляет слишком много памяти. Слишком много ненужных данных нужно прочитать.

Есть ли способ импортировать в R, анализируя только ту информацию, которую я хочу получить из файла json?

Вот мой текущий код в R:

jsonToList<-lapply(readLines("E:/data/rslog/rslog-2019-07-17-part-00.json.gz"), fromJSON)

df<-data.frame()
sample_size<-100 # this is just for small size data test
for (j in 1:sample_size){
  for (i in 1:9){ # actually I need just two columns
    df[j,i]<-jsonToList[[j]][i]
  }
}

df_need<-df[-which(duplicated(df$transactionId,fromLast = TRUE)),]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...