MySQL servidor : conexión con dask

Tengo un marco de datos que tiene millones de registros y mientras tira el marco de datos en el yipitro se necesita mucha memoria y no puedo hacerlo a medida que el servidor se estrella porque hay millones de registros en la base de datos.

Tengo que saber sobre el paquete DASK que ayuda a conseguir un marco de datos enorme en el python , soy nuevo para deshacerme y no estoy seguro de cómo puedo configurar una conexión con el servidor dask y mysql.

Usualmente hago conexión con el jupyter y el servidor mysql usando la siguiente manera, realmente apreciaría si alguien pudiera proporcionarme cómo hacer conexión para la misma tabla y servidor utilizando dask framework.

sql_conn = pyodbc.connect("DSN=CNVDED")
query = "SELECT *  FROM Abc table"
df_training = pd.read_sql(query, sql_conn)
data=df_training

Te agradecería que alguien me ayudara. en esto y no puedo usar csv y luego usar dask necesita una conexión adecuada con el servidor mysql

Pregunta hecha hace 3 años, 4 meses, 14 días - Por binarybrainiac


2 Respuestas:

  • Para conectarte a un servidor MySQL utilizando Dask en lugar de pandas, puedes optar por el paquete dask.dataframe de Dask. A continuación te muestro un ejemplo de cómo podrías hacerlo:

    python
    import dask.dataframe as dd
    from dask.distributed import Client
    import dask.array as da
    
    

    Crear un cliente Dask

    client = Client()

    Crear una conexión con la base de datos MySQL

    sql_conn = pyodbc.connect("DSN=CNVDED")

    Definir la consulta SQL

    query = "SELECT * FROM Abc table"

    Crear un dataframe de Dask desde la consulta SQL

    ddf = dd.read_sql_table(query, uri=f'mysql+pyodbc://username:password@hostname:port/databasename', index_col='index_column')

    Realizar operaciones con el dataframe de Dask

    result = ddf.groupby('column_name').sum().compute()

    Cerrar la conexión con la base de datos

    sql_conn.close()

    En este ejemplo, dd.read_sql_table se utiliza para leer directamente desde la base de datos MySQL y crear un dataframe de Dask. Asegúrate de reemplazar 'username', 'password', 'hostname', 'port' y 'databasename' con los valores apropiados para tu conexión.

    Es importante tener en cuenta que Dask opera de manera diferida, por lo que las operaciones no se ejecutarán de inmediato al llamar a los métodos, sino que se ejecutarán cuando se llame al método compute().

    Espero que esta información te sea útil para conectarte a un servidor MySQL utilizando Dask. ¡Déjame saber si necesitas más ayuda!

    Respondida el Dec 17, 2020 a las 20:31 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Configuración del servidor Dask y Jupyter con MySQL

    Paso 1: Instalar Dask y otros requisitos

    
    pip install dask distributed jupyterlab
    

    Paso 2: Iniciar el clúster de Dask

    
    dask-scheduler
    dask-worker
    

    Paso 3: Conectar JupyterLab al clúster de Dask

    En JupyterLab, ejecuta el siguiente comando:

    
    %load_ext dask_client
    
    client = Client("localhost:8786")
    

    Paso 4: Conectar a MySQL con PyODBC

    
    import pyodbc
    
    

    Sustituye 'DSN=SERVIDOR' con la cadena de conexión DSN correcta

    sql_conn = pyodbc.connect("DSN=SERVIDOR")

    Paso 5: Leer datos de MySQL con Dask

    
    import dask.dataframe as dd
    import pandas as pd
    
    query = "SELECT  FROM ABC_TABLE"
    
    

    Leer datos de MySQL con Dask

    df = dd.read_sql(query, sql_conn)

    Convertir a un DataFrame de Pandas

    df = df.compute()

    Recomendaciones para optimizar el rendimiento:

    Utiliza particiones para dividir la consulta en fragmentos más pequeños que se puedan procesar en paralelo. Utiliza el módulo dask.dataframe.optimize para optimizar el plan de ejecución de la consulta. Considera la posibilidad de utilizar un almacenamiento en memoria caché, como Redis o Dask Distributed, para mejorar el rendimiento de las consultas.

    Nota:

    Asegúrate de que el servidor Dask y JupyterLab estén ejecutándose en el mismo host o en hosts que puedan comunicarse entre sí. Ajusta el número de trabajadores en el clúster de Dask según los requisitos de memoria y computación de tu consulta.

    Respondida el Dec 17, 2020 a las 20:43 - por Gemini

    Votos positivos: 0 | Votos negativos: 0