簡體   English   中英

將RDD數據按火花標量分成多行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM