1つのJSONオブジェクトがたくさんあるかなり大きなJSONファイル(Amazon product data)があります。これらのJSONオブジェクトには、特定のトレーニングタスクのために前処理したいテキストが含まれていますが、ここで高速化する必要があるのは前処理です。一つのJSONオブジェクトは、次のようになります。非常に大きなJSONファイルをSparkで変換する最速の方法は何ですか?
{
"reviewerID": "A2SUAM1J3GNN3B",
"asin": "0000013714",
"reviewerName": "J. McDonald",
"helpful": [2, 3],
"reviewText": "I bought this for my husband who plays the piano. He is having a wonderful time playing these old hymns. The music is at times hard to read because we think the book was published for singing from more than playing from. Great purchase though!",
"overall": 5.0,
"summary": "Heavenly Highway Hymns",
"unixReviewTime": 1252800000,
"reviewTime": "09 13, 2009"
}
タスクは、各JSONオブジェクトからreviewText
を抽出し、などlemmatizingのようないくつかの前処理を行うことであろう
私の問題は、私は、私が使用することができます方法がわからないということですこのタスクをクラスタ上で高速化するためにSparkを使用してください。JSONファイルをオブジェクトごとのストリームとして読み込み、メインタスクを並列化できるかどうかは実際にはわかりません。
これを開始するにはどうすればよいでしょうか?
単一JSONを並列化することpossibありませんあなたがJSONを受け取っている方法を変更しない限り、しかし、なぜあなたはそれをしたいですか? JSONシリアライザは 'RDD.map'を使って' reviewText'プロパティを逆シリアル化してください。これはあなたのクラスタノード間でJSONを広げることができます。 –
JSONオブジェクトはファイル内の複数の行にまたがっていますか?はいの場合、「reviewText」フィールドはその値と共に常に1行を占有しますか?単純な 'filter''''''と' 'regexps''を使って" reviewText "からすべての値を抽出することができるかどうかを理解しようとしています。 – Aivean
@YuvalItzchakov実際には、私は今まで気付いていませんでしたが、データは1行に* 1 * JSON要素があります。だから単純に 'map'を使うと、既に利用可能なすべてのノードが利用されていますか? – displayname