2017-10-26 4 views
-3

Ich habe eine große Menge von Daten in jeder Sekunde in Form von Python-Wörterbüchern, gerade jetzt ich es auf mySQL-Server speichern, wie sie hereinkommen, aber das schafft einen Rückstand, das ist mehr als ein paar Std. Was ist der beste Weg, um die Daten lokal zu speichern und verschieben Sie sie zu einem mySQL-Server jede Stunde oder so als ein Stück, um Zeit zu sparen. Ich habe redis versucht, aber es kann nicht eine Liste dieser Wörterbücher, die ich später zu mySQL verschieben kann.Speichern von großen Streaming-Daten in Python

+0

Sie speichern eine serialisierte Wörterbuch Zeichenfolge in einer Redis Liste, wenn die Wörterbücher können mit Python Beize oder JSON serialisiert werden werden. – mhawke

Antwort

1

Eine wenig bekannte Tatsache über das pythoneigene pickle Format ist, dass Sie sie glücklich in eine Datei verketten können.

Das heißt, öffnen Sie einfach eine Datei in append Modus und pickle.dump() Ihr Wörterbuch in diese Datei. Wenn Sie zusätzliche Phantasie sein wollen, könnten Sie so etwas wie timestamped Dateien tun:

def ingest_data(data_dict): 
    filename = '%s.pickles' % date.strftime('%Y-%m-%d_%H') 
    with open(filename, 'ab') as outf: 
     pickle.dump(data_dict, outf, pickle.HIGHEST_PROTOCOL) 


def read_data(filename): 
    with open(filename, 'rb') as inf: 
     while True: 
      yield pickle.load(inf) # TODO: handle EOF error 
Verwandte Themen