Мне забавно, что у вас есть 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|
//+----+----+