Estoy leyendo un conjunto de datos como el siguiente.

 f = sc.textFile("s3://test/abc.csv")

Mi archivo contiene más de 50 campos y quiero asignar los encabezados de columna para cada uno de los campos a hacer referencia más adelante en mi guión.

¿Cómo puedo hacer que en PySpark ? Es DataFrame camino a seguir aquí ?

PS – Novato a Chispa.

Es DataFrame camino a seguir aquí ? – sí, lo es. O namedtuple si va a utilizar una gran cantidad de llanura de código Python.
DataFrame es una combinación del esquema y de los ddr. Ahora la variable «f» en el código es un rdd. Por lo tanto, si usted agregar esquema, obtendrá DataFrame. A continuación, tendrá los encabezados y los nombres de columna. También, puesto que puede registrar este tipo de datos como tabla y hacer de SQL en la parte superior de la misma.

OriginalEl autor GoldenPlatinum | 2016-04-13

3 Comentarios

  1. 5

    Aquí es cómo agregar los nombres de columna utilizando DataFrame:

    Asumir el archivo csv tiene el delimitador ‘,’. Preparar los datos de la siguiente manera antes de transferirlos a DataFrame:

    f = sc.textFile("s3://test/abc.csv")
    data_rdd = f.map(lambda line: [x for x in line.split(',')])

    Supongamos que los datos que tiene 3 columnas:

    data_rdd.take(1)
    [[u'1.2', u'red', u'55.6']]

    Ahora, usted puede especificar los nombres de columna cuando la transferencia de este RDD a DataFrame utilizando toDF():

    df_withcol = data_rdd.toDF(['height','color','width'])
    
    df_withcol.printSchema()
    
        root
         |-- height: string (nullable = true)
         |-- color: string (nullable = true)
         |-- width: string (nullable = true)

    Si no se especifican los nombres de columna, se obtiene un DataFrame con nombres de columna predeterminados ‘_1’, ‘_2’, …:

    df_default = data_rdd.toDF()
    
    df_default.printSchema()
    
        root
         |-- _1: string (nullable = true)
         |-- _2: string (nullable = true)
         |-- _3: string (nullable = true)

    OriginalEl autor Ida

  2. 4

    La solución a esta pregunta depende de la versión de Spark está ejecutando. Suponiendo que usted está en Spark 2.0+, puede leer el archivo CSV en un DataFrame y agregar columnas con toDF que es bueno para la transformación de un dispositivo de este tipo a un DataFrame O la suma de las columnas existentes en un marco de datos.

    filename = "/path/to/file.csv"
    df = spark.read.csv(filename).toDF("col1","col2","col3")

    OriginalEl autor BushMinusZero

  3. 0
    f = sc.textFile("s3://test/abc.csv") <br />
    header = f.first()
    
    header will give you as below:-<br />
    u'col1,col2,col3'  --> for example taking 3 columns name
    
    head = str(header).split(",") <br />
    head will give you a list<br/>
    ['col1','col2','col3']
    
    fDF = f.filter(lambda row: row!=header).map(lambda x: str(x).split(",")).toDF(head)<br/>
    fdF.show() <br/>

    le dará la cabecera, así como los datos en dataframe como sea necesario.

    OriginalEl autor Vinod Kumar

Dejar respuesta

Please enter your comment!
Please enter your name here