R очень медленно читает в файлах .jsonl - PullRequest
0 голосов
/ 21 октября 2019

Мне нужно прочитать файлы .jsonl в R, и это происходит очень медленно. Для файла, который состоит из 67 000 строк, загрузка заняла более 10 минут. Вот мой код:

library(dplyr)
library(tidyr)
library(rjson)

f<-data.frame(Reduce(rbind, lapply(readLines("filename.jsonl"),fromJSON)))
f2<-f%>%
  unnest(cols = names(f))

Вот пример файла .jsonl

{"UID": "a1", "str1": "Who should win?", "str2": "Who should we win?", "length1": 3, "length2": 4, "prob1": -110.5, "prob2": -108.7}
{"UID": "a2", "str1": "What had she walked through?", "str2": "What had it walked through?", "length1": 5, "length2": 5, "prob1": -154.6, "prob2": -154.8}

Итак, мои вопросы: (1) Почему это занимает так много времени, и (2) Как мне это исправить?

1 Ответ

2 голосов
/ 21 октября 2019

Я думаю, что наиболее эффективный способ чтения файлов json-строк - это использование функции stream_in() из пакета jsonlite . stream_in() требует connection в качестве ввода, но вы можете просто использовать следующую функцию для чтения в обычном текстовом файле:

read_json_lines <- function(file){
  con <- file(file, open = "r")
  on.exit(close(con))
  jsonlite::stream_in(con, verbose = FALSE)
}
...