2016-12-10 12 views
-2

列を行に変換する必要があります。以下のspark scala code.inputファイルの要件で私を助けてください。区切りと私は行Apache Spark - データを解析して列を行に変換する

私の入力レコードに変換する必要がカンマ区切りでvalue.basedコラムたカンマ区切りの1:

C11 | C12 |、B | C14

C21 | C22 |、C、D | C24

予想される出力:

、C11、C12、C14

B、C11、C12、C14

、C21、C22、C24

C、C21、C22、C24

D、C21、C22、C24

おかげで、

シヴァは

答えて

0

まず読みますデータフレームをcsvとして|セパレータとして:

これは、必要な基本列を持つデータフレームを提供し、3番目の文字列は文字列になります。この列の名前を_c2(第3列のデフォルト名)に変更しました。今度は文字列を分割して配列を得ることができます 前の列も削除します。 最後に、我々は行に配列を回すと、未使用のカラム

from pyspark.sql.functions import split 
from pyspark.sql.functions import explode 
df1 = spark.read.csv("pathToFile", sep="|") 
df2 = df1.withColumn("splitted", split(df1["_c2"],",")).drop("_c2") 
df3 = df2.withColumn("exploded", explode(df2["splitted"])).drop("splitted") 

またはScalaで(遊離型)を削除する爆発使用

import org.apache.spark.sql.functions.split 
import org.apache.spark.sql.functions.explode 
val df1 = spark.read.csv("pathToFile", sep="|") 
val df2 = df1.withColumn("splitted", split(df1("_c2"),",")).drop("_c2") 
val df3 = df2.withColumn("exploded", explode(df2("splitted"))).drop("splitted") 
関連する問題