2016-03-24 2 views
0

У меня есть много больших json-файлов (3G каждый), которые я хочу эффективно загружать на мощный RS-сервер, однако загрузка всех записей из всех файлов будет излишней и утомительной (записи 50M умножаются на 40) , Поэтому я подумал использовать пакет jsonlite, потому что я слышал, что он эффективен. Дело в том, что мне не нужны все записи, но только подмножество записей, в которых встроенный элемент («источник») имеет существующее поле с именем «продолжительность». Это в настоящее время мой код:R jsonlite filter records перед загрузкой

library(jsonlite) 
library(curl) 
url <- "https://s3-eu-west-1.amazonaws.com/es-export-data/logstash-2016.02.15.json" 
test <- stream_in(url(url)) 

это только один экстракт из многих. теперь пакет jsonlite имеет функцию «сглаживания», чтобы сгладить внедренные элементы, чтобы создать 1 широкоформатный фрейм данных. Тогда я смогу отфильтровать его. Однако это кажется неэффективным. Я думаю, что предварительный фильтр при загрузке данных намного эффективнее. здесь dput одной записи:

> dput(test_data) 
"{\"_index\":\"logstash-2016.02.15\",\"_type\":\"productLogs\",\"_id\":\"AVLitaOtp4oNFTVKv9tZ\",\"_score\":0,\"_source\":{\"EntryType\":\"Event\",\"queryType\":\"clientQuery\",\"status\":\"success\",\"cubeName\":\"Hourly Targets Operations by Model\",\"cubeID\":\"aHourlyIAAaTargetsIAAaOperationsIAAabyIAAaModel\",\"startQueryTimeStamp\":\"2016-02-15T02:14:23+00:00\",\"endQueryTimeStamp\":\"2016-02-15T02:14:23+00:00\",\"queryResponeLengthBytes\":0,\"duration\":0,\"concurrentQuery\":14,\"action\":\"finishQueryJaql\",\"@timestamp\":\"2016-02-15T02:14:23.253Z\",\"appTypeName\":\"dataserver\",\"@version\":\"1\",\"host\":\"VDED12270\",\"type\":\"productLogs\",\"tags\":[],\"send_type\":\"PullGen1\",\"sisenseuid\":\"[email protected]\",\"sisenseOwnerid\":\"[email protected]\",\"sisenseVersion\":\" 5.8.1.29\",\"sisenseMonitoringVersion\":\"3.0.0.6\",\"inputType\":\"sqs\",\"token\":\"fTdyoSwaFZTalBlnFIlTsqvvzfKZVGle\",\"logstash_host\":\"vpc_cluster_1\"}}" 
> 

любая помощь оценили

ответ

0

Вы должны добавить функцию обработчика и указать, какие элементы вам нужно:

stream_in(url(url) , handler = function(x) x$"_source$duration") 
+0

может обработчик этого оба ряда подмножества и подстроки столбцов? если да, как вы это рекомендуете? –

Смежные вопросы