2016-07-05 11 views
0

Ich habe viele JSON-Dateien, aber sie sind nicht korrekt für Spark formatiert. Ich möchte Code nicht schreiben, um sie speziell in das richtige Format zu konvertieren, indem ich jedes Diktat in jeder Zeile normalisiere.Fusion Spark RDDs von schlechten JSON

Stattdessen hoffe ich, Funken zu verwenden, um ihren Inhalt zu analysieren. Ich habe die folgenden

import json 

import os 

json_dir = '/data/original/TEMP' 
df = sc.wholeTextFiles(os.path.join(json_dir,'*.json')) 
j_docs = df.map(lambda x: json.loads(x[1])).cache() 

Dies funktioniert gut und j_docs ist im Wesentlichen eine Liste von Listen. Zum Beispiel ist das erste Element in j_docs eine Liste von Dicts aus der ersten Datei.

Ich möchte alle diese einzelnen Listen in einer großen RDD kombinieren. Im Idealfall ohne ein Sammeln der Daten durchführen zu müssen.

Dank

+1

Verwenden flatMap statt Karte? – C4stor

+0

Ja Mann! Vielen Dank. – browskie

Antwort

1

Verwendung flatMap statt Karte, die genau zu tun :)

+0

danke, kann ich das ohne sammeln? Es gibt mir eines davon, wenn ich versuche: 'PipelinedRDD' Objekt ist nicht iterierbar – browskie

+0

Wo gibt es das? Später nehme ich an? – C4stor

+0

Dieser gibt es ohne collect() zurück nach flatMap merged = sc.parallelize (j_docs.flatMap (Lambda x: x)) – browskie

Verwandte Themen