Cómo asignar y utilizar los encabezados de columna en la Chispa?

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 Kommentare

  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

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea