Вы можете использовать СДР для очистки данных перед созданием из них фрейма данных:
rdd = sc.textFile('path-to-csv.csv')
Затем очистите его, сдвинув последний столбец, чтобы выделить данные Address
в конец строки:
df = rdd.map(lambda l: l.split(','))\
.map(lambda l: Row(Name=l[0],Mobile=l[-1],Address=', '.join(l[1:-1])))\
.toDF()
И для явного задания схемы:
df = rdd.map(lambda l: l.split(','))\
.map(lambda l: Row(Name=l[0],MobileNo=l[-1],Address=', '.join(l[1:-1])))\
.toDF(schema=StructType(fields=[StructField('Name',StringType()),
StructField('Address', StringType()),
StructField('MobileNo', StringType())]))
Результат:
+------+---------------------------+----------+
|Name |Address |MobileNo |
+------+---------------------------+----------+
|Bob |Delhi, NCR |8984124789|
|Scott |Bangalore, Karnataka |9040788301|
|Robert|Andheri, Mumbai, Maharastra|9338075922|
+------+---------------------------+----------+