es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo insertar miles de filas en una tabla de almacenamiento de Azure con una función de aplicación utilizando Python.

Estoy intentando escribir una Azure App Function utilizando Python donde creo una tabla de almacenamiento de Azure simple y la guardo con hasta 10000 filas.

He intentado crear entidad por entidad usando

from azure.data.tables import TableClient, TableTransactionError
...
table_client.create_entity({...})

Funciona, pero es lento.

Luego intenté usar

from concurrent.futures import ProcessPoolExecutor as PoolExecutor

lo que aceleró bastante todo el proceso, pero NO se puede usar en la función de la aplicación Azure por razones obvias.

También intenté usar

table_client.upsert_entity(i)
...
table_client.submit_transaction(operations)

pero volvía a ser lento.

Finalmente intenté lo siguiente:

Crear un nuevo lote.

batch = TableBatch()

Contar cuántos elementos se almacenan en el lote.

inBatch = 0

Bucle sobre todos los datos que queremos insertar.

for x in dataToStore:

Insertar la entidad en el lote.

batch.insert_entity({
    'PartitionKey': 'PARTICION1',
    'RowKey': str(x['rowkey']),
    'someKey': x['someValue'],
    'someOtherKey': x['someOtherValue']
})

Incrementar el contador de elementos en el lote.

inBatch += 1

Solo podemos enviar lotes con hasta 100 registros.

if inBatch > 99:

Confirmar el lote (enviar a Azure).

table_service.commit_batch('tablename', batch)

Reinicie el lote para que no contenga elementos antiguos.

batch = TableBatch()
inBatch = 0

Pero esto es bastante lento y nada duradero.

Azure Storage table afirma que se pueden guardar grandes cantidades de datos rápidamente.

¿Alguien sabe cómo?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que has intentado diferentes enfoques para escribir en una tabla de almacenamiento de Azure con Python, pero no has logrado el rendimiento deseado.

    El mejor enfoque para escribir grandes cantidades de datos en una tabla de almacenamiento de Azure es utilizar las Operaciones por Lote del Servicio de Tabla. Esto te permite enviar hasta 100 operaciones en un único lote, lo que puede mejorar significativamente el rendimiento. Además, las operaciones por lote son atómicas, lo que significa que o todas las operaciones en el lote tendrán éxito o ninguna de ellas lo tendrá.

    Puedes encontrar más información sobre cómo utilizar las Operaciones por Lote del Servicio de Tabla en Python en la Guía de Cómo Hacer de Python del Almacenamiento de Tabla de Azure.

Comments are closed.