Appending a local Pandas dataframe to a Delta table in Azure is slow
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- azure, pandas, python, sqlalchemy
- Área
- databases, performance
Línea de trabajo
No se ha indicado ningún archivo del repositorio ni ninguna prueba. Empieza reproduciendo el ejemplo proporcionado de pandas DataFrame.to_sql con databricks-sql-connector 3.4.0 contra el SQL warehouse indicado y, después, sigue la ruta de escritura de SQLAlchemy y connector para localizar el retraso por fila. Se considera terminado cuando se haya identificado una ruta de escritura más rápida compatible o se hayan documentado la limitación y su causa.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I followed the instructions on this page to create a SQLAlchemy engine and used it with the Pandas to_sql() method. It's taking around 2 seconds to append one data point to a Delta table in Azure Databricks, and it seems to be scaling linearly. A dataframe containing 1 column and 10 rows is taking ~20 seconds to push to Azure.
Is there a way to make writing back to Databricks from a local machine faster?
Example code:
from sqlalchemy import create_engine
import pandas as pd
import os
server = 'my_server.azuredatabricks.net'
http_path = "/sql/1.0/warehouses/my_warehouse"
access_token = "MY_TOKEN"
catalog = "my_catalog"
schema = "my_schema"
if "NO_PROXY" in os.environ:
os.environ["NO_PROXY"] = os.environ["NO_PROXY"] + "," + server
else:
os.environ["NO_PROXY"] = server
if "no_proxy" in os.environ:
os.environ["no_proxy"] = os.environ["no_proxy"] + "," + server
else:
os.environ["no_proxy"] = server
engine = create_engine(f"databricks://token:{access_token}@{server}?" +
f"http_path={http_path}&catalog={catalog}&schema={schema}"
)
df = pd.DataFrame({'name' : ['User 1', 'User 2', 'User 3', User 4', 'User 5', 'User 6', User 7', 'User 8', 'User 9', 'User 10']})
# The next command takes around 20 seconds to complete
df.to_sql(name='my_test_table', con=engine, if_exists='append', index=False)
Local specs:
databricks-sql-connector==3.4.0
pandas==2.2.2
Python 3.10.14
Azure specs:
Databricks SQL warehouse cluster
Runtime==13.3 LTS
- Lenguaje dominante
- Python
- Estrellas
- 233
- Forks
- 152
- Merge medio
- 21 h 5 min
- PR fusionados (30 d)
- 10
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de databricks/databricks-sql-python
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Todos los issues de databricks/databricks-sql-python
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
PolicyEngine/policyengine-us#9559 ·
-
priority: p3
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
googleapis/librarian#7636 ·
-
from:qa priority:P2 reliability tech-debt
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
spec-kitty/spec-kitty#4874 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100