Articles of apache spark sql

PySpark: StructField (…,…, False) siempre devuelve `nullable = true` en lugar de` nullable = false`

Soy nuevo en PySpark y me enfrento a un problema extraño. Estoy tratando de establecer una columna en no anulable mientras se carga un conjunto de datos CSV. Puedo reproducir mi caso con un conjunto de datos muy pequeño ( test.csv ): col1,col2,col3 11,12,13 21,22,23 31,32,33 41,42,43 51,,53 Hay un valor nulo en la fila […]

Eliminar el espacio en blanco de los valores de columna del dataframe en Spark

Tengo un dataframe ( business_df ) del esquema: |– business_id: string (nullable = true) |– categories: array (nullable = true) | |– element: string (containsNull = true) |– city: string (nullable = true) |– full_address: string (nullable = true) |– hours: struct (nullable = true) |– name: string (nullable = true) Quiero hacer un nuevo […]

Crear una sola fila de datos de la lista de lista PySpark

Tengo datos como estos data = [[1.1, 1.2], [1.3, 1.4], [1.5, 1.6]] Quiero crear un dataframe de PySpark Ya uso dataframe = SQLContext.createDataFrame(data, [‘features’]) pero siempre consigo +——–+—+ |features| _2| +——–+—+ | 1.1|1.2| | 1.3|1.4| | 1.5|1.6| +——–+—+ ¿Cómo puedo obtener un resultado como el siguiente? +———-+ |features | +———-+ |[1.1, 1.2]| |[1.3, 1.4]| |[1.5, […]

PySpark crea una nueva columna con mapeo desde un dict

Usando Spark 1.6, tengo una DataFrame column Spark DataFrame column (llamada digamos col1 ) con los valores A, B, C, DS, DNS, E, F, G y H y quiero crear una nueva columna (digamos col2 ) con los valores del dict aquí abajo, ¿cómo mapeo esto? (por lo tanto, la ‘A’ debe asignarse a ‘S’, […]

PySpark: withColumn () con dos condiciones y tres resultados

Estoy trabajando con Spark y PySpark. Estoy tratando de lograr el resultado equivalente al siguiente pseudocódigo: df = df.withColumn(‘new_column’, IF fruit1 == fruit2 THEN 1, ELSE 0. IF fruit1 IS NULL OR fruit2 IS NULL 3.) Estoy intentando hacer esto en PySpark, pero no estoy seguro de la syntax. Cualquier punteros? Miré en expr() pero […]

PySpark – Agregar una nueva columna con un rango por usuario

Tengo este DataSrame de PySpark df = pd.DataFrame(np.array([ [“aa@gmail.com”,2,3], [“aa@gmail.com”,5,5], [“bb@gmail.com”,8,2], [“cc@gmail.com”,9,3] ]), columns=[‘user’,’movie’,’rating’]) sparkdf = sqlContext.createDataFrame(df, samplingRatio=0.1) user movie rating aa@gmail.com 2 3 aa@gmail.com 5 5 bb@gmail.com 8 2 cc@gmail.com 9 3 Necesito agregar una nueva columna con un rango por usuario Quiero tener esta salida user movie rating Rank aa@gmail.com 2 3 1 […]

Transformación de estilo pandas de datos agrupados en PySpark DataFrame

Si tenemos un dataframe de Pandas que consta de una columna de categorías y una columna de valores, podemos eliminar la media de cada categoría haciendo lo siguiente: df[“DemeanedValues”] = df.groupby(“Category”)[“Values”].transform(lambda g: g – numpy.mean(g)) Según tengo entendido, los marcos de datos de Spark no ofrecen directamente esta operación de agrupación / transformación (estoy usando […]

¿Cómo unirse en múltiples columnas en Pyspark?

Estoy usando Spark 1.3 y me gustaría unirme en varias columnas usando la interfaz de Python (SparkSQL) Los siguientes trabajos: Primero los registro como tablas temporales. numeric.registerTempTable(“numeric”) Ref.registerTempTable(“Ref”) test = numeric.join(Ref, numeric.ID == Ref.ID, joinType=’inner’) Ahora me gustaría unirme a ellos en base a múltiples columnas. Me sale SyntaxError : syntax no válida con esto: […]

¿Métodos para escribir archivos de parquet usando Python?

Tengo problemas para encontrar una biblioteca que permita escribir archivos de Parquet con Python. Puntos de bonificación si puedo usar Snappy o un mecanismo de compresión similar junto con él. Hasta ahora, el único método que he encontrado es usar Spark con el pyspark.sql.DataFrame parquet pyspark.sql.DataFrame . Tengo algunos scripts que necesitan escribir archivos de […]

Agregar columna a PySpark DataFrame dependiendo de si el valor de la columna está en otra columna

Tengo un DataSrame de PySpark con estructura dada por [(‘u1’, 1, [1 ,2, 3]), (‘u1’, 4, [1, 2, 3])].toDF(‘user’, ‘item’, ‘fav_items’) Necesito agregar una columna adicional con 1 o 0 dependiendo de si el “elemento” está en “fav_items” o no. Asi que queria [(‘u1’, 1, [1 ,2, 3], 1), (‘u1’, 4, [1, 2, 3], 0)] […]