強力なRServerマシンに効率的にロードしたい大きなjsonファイル(それぞれ3G)がたくさんありますが、すべてのファイルからすべてのレコードをロードするのは冗長で疲れます(50Mレコードは40倍になります)。効率がいいと聞いたので、jsonliteパッケージを使うことにしました。問題は、すべてのレコードが必要なわけではなく、埋め込み要素 (「ソース」) に「期間」という名前の既存のフィールドがあるレコードのサブセットのみが必要なことです。これは現在私のコードです:
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))
多くの抜粋のうちの 1 つにすぎません。現在、jsonlite パッケージには、埋め込み要素を平坦化して 1 つの幅の平坦化データ フレームを作成する「平坦化」機能があります。それから私はそれをフィルタリングすることができました。ただし、効率的ではないようです。データが読み込まれるときに事前にフィルタリングする方がはるかに効率的だと思います。ここに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\":\"janos.kopecek@regenersis.com\",\"sisenseOwnerid\":\"janos.kopecek@regenersis.com\",\"sisenseVersion\":\" 5.8.1.29\",\"sisenseMonitoringVersion\":\"3.0.0.6\",\"inputType\":\"sqs\",\"token\":\"fTdyoSwaFZTalBlnFIlTsqvvzfKZVGle\",\"logstash_host\":\"vpc_cluster_1\"}}"
>
任意の助けをいただければ幸いです