2016-08-24 2 views
0

Meine Frage ist zum Erstellen eines Objekttyps oder Dokuments für .hdf5-Dateien. Das Objekt wird drei Attribute haben, eine ID, eine Benutzer_ID und ein Boolesches Array der Größe 64. Ich muss sie ungefähr 10000000 (Zehn Millionen) viele erstellen.Wie erstellt man einen bestimmten Objekttyp für den Typ .hdf5?

Imagine mongodb, ich muss sie so verwenden. Ich muss Anfragen für einige bestimmte user_id'ed Objekte sowie für alle von ihnen machen.

Jeder Vorschlag und Hilfe wird geschätzt.

Antwort

0

Ich würde weitermachen und ein Wörterbuch für diesen Fall verwenden. Ich finde Wörterbücher gut skalieren. Da die Abfrage auf user_id wäre, würde ich es zum Schlüssel machen.

würde die Struktur wie seine

{ 
    'user_id-xyz': { 
     'id':'id-1212', 
     'boolarray':[True,False,..], 

    }, 
    'user_id-abc':{ 
     ... 
    } 
} 

Um dies zu erreichen, habe ich für einen numpy benutzerdefinierten Datentypen gehen könnte.

element = np.dtype([('id', 'i16'), ('boolarray', 'b',(64,1))]) 
f = h5py.File('foo.hdf5','w') 
dset = f.create_dataset("blocky", (1000000,), dtype='V79') # 64(bools)+15(for id) 
grp = f.create_group("user_id-xyz") 
# create subgroups for each id. 
subdataset = grp.create_dataset('ele',(1,),dtype=element) 

# test of membership. 
'user_id-xyz' in f 
# retrieval 
f.get('user_id-xyz') 
# all keys. 
f.keys() 

Insgesamt hoffe ich, dass dies Ihnen hilft.

+0

Ok, aber wie kann ich diese Objekte speichern? Soweit ich weiß, verwendet hdf5 numpy Arrays zum Speichern. –

+0

Okay. Ich habe das h5py-Tag nicht wirklich bemerkt. Aber dann, wenn ich auf Docs schaue, würde ich eine user_id als Gruppe verwenden. und darin hätte ich ein Bool-Array. Erste n Ziffern, die die ID darstellen. Wie groß ist die ID? – Vasif

+0

2^10 oder 2^15 höchstwahrscheinlich. –

Verwandte Themen