СДР-данные в несколько строк в Spark-Scala - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть текстовый файл фиксированной ширины (образец) с данными

2107abc2018abn2019gfh

, где все данные строк объединены в одну строку. Мне нужно прочитать текстовый файл.и разделить данные в соответствии с фиксированной длиной строки = 7, сгенерировать несколько строк и сохранить их в СДР.

2107abc

2018abn

2019gfh

, где 2107 - это один столбец, а abc - это еще один столбец,

логика будет применима для огромного файла данных, например, 1 ГБ или более?

1 Ответ

0 голосов
/ 19 декабря 2018

Мне забавно, что у вас есть RDD[String], и вы хотите извлечь оба столбца из ваших данных.Сначала вы можете разделить строку на длину 7, а затем снова на 4. Вы разделите столбцы.Ниже приведен код для того же.

//creating a sample RDD from the given string
val rdd = sc.parallelize(Seq("""2107abc2018abn2019gfh"""))

//Now first split at length 7 then again split at length 4 and create dataframe
val res = rdd.flatMap(_.grouped(7).map(x=>x.grouped(4).toSeq)).map(x=> (x(0),x(1)))

//print the rdd
res.foreach(println)

//output
//(2107,abc)
//(2018,abn)
//(2019,gfh)

Если вы хотите, вы также можете преобразовать свой RDD в информационный кадр для дальнейшей обработки.

//convert to DF
val df = res.toDF("col1","col2")

//print the dataframe
df.show
//+----+----+
//|col1|col2|
//+----+----+
//|2107| abc|
//|2018| abn|
//|2019| gfh|
//+----+----+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...