2017-01-24 4 views
0

나는스파크 RDD 매핑 질문

 
no1  1|3|4 
no2  4|5|6 

다음과 같은 텍스트 데이터를하고 난 스파크 RDD 및 스칼라 언어를 사용하여 다음과 같이 위의 데이터를 변환 할 수 있습니다.

 
no1  1 
no1  3 
no1  4 
no2  4 
no2  5 
no2  6 

저는 Spark와 Scala에 매우 익숙합니다. 그리고 저는 이것을하는 어떤 예도 찾을 수 없습니다.

답변

4

파일을 RDD API보다 미래의 스파크 버전에 중점을 둔 데이터 프레임으로 읽는 것이 좋습니다. 귀하의 코멘트에 대한

val df = Seq(("no1", "1|3|4"), ("no2", "4|5|6")).toDF("A", "B") 
// df: org.apache.spark.sql.DataFrame = [A: string, B: string] 

df.show 
+---+-----+ 
| A| B| 
+---+-----+ 
|no1|1|3|4| 
|no2|4|5|6| 
+---+-----+ 


df.withColumn("B", explode(split($"B", "\\|"))).show 
+---+---+ 
| A| B| 
+---+---+ 
|no1| 1| 
|no1| 3| 
|no1| 4| 
|no2| 4| 
|no2| 5| 
|no2| 6| 
+---+---+ 
+0

감사 : 그리고 데이터 프레임, 당신이 요구하는 작업은 splitexplode 기능을 가진 매우 간단합니다. 데이터 txt 파일을 가지고 있고 그것을 수동으로 타이핑하지 않고 입력하고 싶다면, 사용자 입력 파일에 대한 명령을 어떻게 얻는가? – sclee1

+0

@ sclee1 Spark을 배우기. 저는 겁 먹지 않고 있습니다. 단지 일련의 질문에서부터 [SO]까지만 응용 프로그램을 작성할 수 있습니다. Spark 튜토리얼에서는 파일 읽기에 대해 다룰 것입니다. –

+0

스파크 버전에 따라 파일의 읽기가 다릅니다. spark 2+의 경우,'spark.read.option ("header", "true") 옵션 ("inferSchema", "true") csv (당신의 파일)'을 사용하는 것이 편리합니다. – Psidom