Создайте Dataframe из пользовательского разделителя строк и пользовательского файла разделителя столбцов из файла dat

У меня есть файл .dat с (\ u0002\n) в качестве разделителя строк и (\ u0001) в качестве разделителя столбцов. Я могу получить только 1 запись в искровом DataFrame, когда использую этот подход.

sc.hadoopConfiguration.set("textinputformat.record.delimiter", unescapeJava(rowDelim));
    val header = Seq("col0", "col1", "col2")
    val schema = StructType(header.map(name => StructField(name, StringType)))

// Load data as RDD
val dataFileTypVal = escapeJava("\u0001");
val datafile = sc.textFile("some dat file path")

// Convert to Row RDD

val rdd1 = datafile.map(_.split( unescapeJava(dataFileTypVal) )).map(arr => Row.fromSeq(arr))
val rdd2 =  datafile.map(_.split( unescapeJava(dataFileTypVal) ).to[List]).map(arr => Row.fromSeq(arr)) 

// Create DataFrame from Row RDD and schema

val df1 = sqlContext.createDataFrame(rdd1, schema)
val df2 = sqlContext.createDataFrame(rdd2, schema)

But df1.show() return only first row 

//df1, df2 -> вернуть только 1 строку.

+----+----+-----+
|col0|col1| col2|
+----+----------+
| A1 | B1 | C1  |
+----+----------+

Но в моем файле 3 строки, и я могу видеть все 3 строки, показанные при печати как

rdd1.collect().foreach(println)
[A1,B1,C1
 A2,B2,C2
 A3,B3,C3
]

Как получить все записи из файла .dat в Dataframe


person Muru    schedule 06.03.2018    source источник