[英]RDD data into multiple rows in spark-scala
我有一個帶有數據的固定寬度的文本文件(樣本)
2107abc2018abn2019gfh
其中所有行數據都合並為單個行,我需要讀取文本文件並根據固定行長= 7拆分數據,並生成多行並將其存儲在RDD中。
2107abc
2018abn
2019gfh
其中2107
是一欄,而abc
是另一欄
該邏輯將適用於1 GB或更大的海量數據文件嗎?
我很有趣,您有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|
//+----+----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.