Давайте сначала рассмотрим ваш код.
// reading a potentially big file
val file=sc.textFile("/user/cloudera-scm/file.csv")
// collecting everything to the driver
val list=file.collect.toList
// converting a local list to a dataframe (this does not work)
list.toDF.show
Есть способы заставить ваш код работать, но сама логика неловкая. Вы читаете данные с исполнителями, помещая все это в драйвер, чтобы просто преобразовать их в массив данных (обратно к исполнителям). Это большая сетевая связь, и драйвер, скорее всего, исчерпает память для любого достаточно большого набора данных.
Что вы можете сделать, это читать данные непосредственно как фрейм данных, как это (драйвер ничего не делает и нет ненужного ввода-вывода):
spark.read
.option("sep", "|") // specify the delimiter
.option("header", true) // to tell spark that there is a header
.option("inferSchema", true) // optional, infer the types of the columns
.csv(".../data.csv").show
+------+-----------+-----------+--------+
|PREFIX|Description|Destination|Num_Type|
+------+-----------+-----------+--------+
| 1| C1| IDD| NA|
| 7| C2| IDDD| NA|
| 20| C3| IDDD| NA|
| 27| C3| IDDD| NA|
| 30| C5| IDDD| NA|
+------+-----------+-----------+--------+