estoy usando la App granel motor cargador (tiempo de ejecución de Python) a las entidades de subida masiva para el almacén de datos. Los datos que estoy cargando se almacenan en un formato propietario, por lo que he implementado por un conector propio (registrado en bulkload_config.py
) para convertirlo al diccionario python intermedio.App Engine granel Prestaciones de la pala
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
Para convertir este diccionario pitón neutra a una entidad del almacén de datos, uso una función de importación mensaje personalizado que he definido en mi YAML.
def feature_post_import(input_dict, entity_instance, bulkload_state):
....
return [all_entities_to_put]
Nota: No estoy usando entity_instance, bulkload_state
en mi función feature_post_import
. Solo estoy creando nuevas entidades de almacenamiento de datos (basadas en mi input_dict
) y las estoy devolviendo.
Ahora, todo funciona muy bien. Sin embargo, el proceso de carga masiva de datos parece tomar demasiado tiempo. Por ej. un GB (~ 1,000,000 de entidades) de datos toma ~ 20 horas. ¿Cómo puedo mejorar el rendimiento del proceso de carga masiva? ¿Me estoy perdiendo de algo?
Algunos de los parámetros que uso con appcfg.py son (10 hilos con un tamaño de lote de 10 entidades por hilo).
Linked un puesto de grupo Google App Engine Python: http://groups.google.com/group/google-appengine-python/browse_thread/thread/4c8def071a86c840
Actualización: para probar el rendimiento del proceso de carga a granel, cargué entities
de un 'Test' Kind
. A pesar de que este entity
tiene una muy simple FloatProperty
, todavía me tomó la misma cantidad de tiempo para la carga a granel los entities
.
Todavía voy a intentar variar los parámetros del cargador a granel, rps_limit
, bandwidth_limit
y http_limit
, para ver si puedo obtener más rendimiento.
Si hay algo confuso sobre la cuestión, o algo que tengo que añadir a continuación, hágamelo saber. – Rahul