2017-02-27 9 views
3

私が知る限り、Apache sparkでは、jsonファイルに1つの文字列を1つだけ格納する必要があります。私はこのようなフィールドjsonファイルで分割されています:Apache spark jsonを分割レコードで解析する

{"id": 123, 
"name": "Aaron", 
"city": { 
    "id" : 1, 
    "title": "Berlin" 
}} 
{"id": 125, 
"name": "Bernard", 
"city": { 
    "id" : 2, 
    "title": "Paris" 
}} 
{...many more lines 
...} 

どのように私はそれを解析することができますか?プリプロセッサが必要か、カスタムスプリッタを提供できますか?

+0

使用しているSparkのバージョンは何ですか? – mrsrinivas

+0

@mrsrinivas 1.6.2。それは問題ですか? – Aguinore

+0

わかりません。しかし、スパークのバージョンに応じて答えを加えることを考えました。 – mrsrinivas

答えて

2

スパークは、改行で分割してレコードを区別します。つまり、標準のjsonリーダーを使用する場合は、1行に1つのレコードが必要です。

あなたはこの答えのような何かを行うことによって変換することができます:https://stackoverflow.com/a/30452120/1547734

基本的な考え方は、wholeTextFilesとして読んで、それを解析し、その結果をflatmapうJSONリーダーにそれをロードすることです。

もちろん、これはファイルが十分に大きく、一度に1つずつ解析されると仮定しています。それ以外の場合は、より複雑なソリューションが必要になります。

+0

私のファイルがRAMに収まらないほど大きければ、それはオプションではありませんか? – Aguinore

+0

番号。私が考えることができる唯一の方法は、手動で行うことです。このようなファイルがある場合は、レコードを再構成して出力に1行として書き込むまで(つまり前処理)、一度に1行ずつ読み込むプログラムを作成します。 –

+0

はい、質問する前に唯一の方法だと思います。ありがとうございました! – Aguinore

関連する問題