pyspark - Agrupación y cálculo de datos

Tengo el siguiente archivo csv.

Index,Arrival_Time,Creation_Time,x,y,z,User,Model,Device,gt
0,1424696633908,1424696631913248572,-5.958191,0.6880646,8.135345,a,nexus4,nexus4_1,stand
1,1424696633909,1424696631918283972,-5.95224,0.6702118,8.136536,a,nexus4,nexus4_1,stand
2,1424696633918,1424696631923288855,-5.9950867,0.6535491999999999,8.204376,a,nexus4,nexus4_1,stand
3,1424696633919,1424696631928385290,-5.9427185,0.6761626999999999,8.128204,a,nexus4,nexus4_1,stand

Tengo que crear un RDD donde el MODELO DE USUARIO Y GT SON LA CLAVE PRIMARIA, no sé si tengo que hacerlo usándolos como una tupla.

Luego, cuando tengo el campo de clave principal, tengo que calcular AVG, MAX y MIN a partir de 'x', 'y' y 'z'.

Aquí hay una salida:

User,Model,gt,media(x,y,z),desviacion(x,y,z),max(x,y,z),min(x,y,z)
a, nexus4,stand,-3.0,0.7,8.2,2.8,0.14,0.0,-1.0,0.8,8.2,-5.0,0.6,8.2

Alguna idea sobre cómo agruparlos y, por ejemplo, obtener los valores de medios de "x"

Con mi código actual obtengo lo siguiente.

# Data loading

    lectura = sc.textFile("Phones_accelerometer.csv")

    datos = lectura.map(lambda x: ((x.split(",")[6], x.split(",")[7], x.split(",")[9]),(x.split(",")[3], x.split(",")[4], x.split(",")[5])))

    sumCount = datos.combineByKey(lambda value: (value, 1), lambda x, value: (x[0] + value, x[1] + 1), lambda x, y: (x[0] + y[0], x[1] + y[1]))

Un ejemplo de mis tuplas:

   [(('a', 'nexus4', 'stand'), ('-5.958191', '0.6880646', '8.135345'))]

Respuestas a la pregunta(2)

Su respuesta a la pregunta