Utilizzo il caricatore di massa di App Engine (Python Runtime) per caricare in massa le entità nell'archivio dati. I dati che sto caricando sono archiviati in un formato proprietario, quindi ho implementato tramite il proprio connettore (registrato in bulkload_config.py
) per convertirlo nel dizionario intermedio python.Prestazioni del caricatore di massa del motore di app
import google.appengine.ext.bulkload import connector_interface
class MyCustomConnector(connector_interface.ConnectorInterface):
....
#Overridden method
def generate_import_record(self, filename, bulkload_state=None):
....
yeild my_custom_dict
Per convertire questo dizionario python neutra ad un'entità datastore, io uso una funzione di importazione postale personalizzata che ho definito nel mio YAML.
def feature_post_import(input_dict, entity_instance, bulkload_state):
....
return [all_entities_to_put]
Nota: non sto usando entity_instance, bulkload_state
nella mia funzione feature_post_import
. Sto solo creando nuove entità di archivio dati (basate sul mio input_dict
) e restituendole.
Ora, tutto funziona alla grande. Tuttavia, il processo di caricamento di massa dei dati sembra richiedere troppo tempo. Ad es. un GB (~ 1.000.000 di entità) di dati richiede ~ 20 ore. Come posso migliorare le prestazioni del processo di carico di massa. Mi sto perdendo qualcosa?
Alcuni dei parametri che utilizzo con appcfg.py sono (10 thread con una dimensione batch di 10 entità per thread).
Linked un post gruppo Google App Engine Python: http://groups.google.com/group/google-appengine-python/browse_thread/thread/4c8def071a86c840
Aggiornamento: per testare le prestazioni del processo di caricamento bulk, ho caricato entities
di un 'Test' Kind
. Anche se questo entity
ha un semplice FloatProperty
, mi ci è voluto ancora lo stesso tempo per caricare in serie quelli entities
.
Ho ancora intenzione di provare a variare i parametri del caricatore di massa, rps_limit
, bandwidth_limit
e http_limit
, per vedere se riesco a ottenere altro throughput.
Se c'è qualcosa di confuso sulla domanda, o qualcosa che devo aggiungere, fammelo sapere. – Rahul