マップを(キーと値のペアで)別の行に分解するために、DataframeをRDDに変換しようとしています。コロンで区切られた文字列をMapTypeに変換する方法は?
Info = sqlContext.read.format("csv"). \
option("delimiter","\t"). \
option("header", "True"). \
option("inferSchema", "True"). \
load("file.tsv")
DataFrame[ID: int, Date: timestamp, Comments: string]
DFのサンプルデータは、次のとおりです。
ID Date Comments
1 2015-04-30 22:42:49.0 {44:'xxxxxxxx'}
2 2015-05-06 08:53:18.0 {83:'aaaaaaaaa', 175:'bbbbbbbbb', 86:'cccccccccc'}
3 2015-05-13 19:57:13.0 {487:'yyyyyyyyyyy', 48:'zzzzzzzzzzzzzz'}
さて、コメントは私が別の行に各キーと値のペアを爆発したい、キーと値のペアに既にあるが、それを文字列として読み込まれます。例えば、
Expected OUTPUT
ID Date Comments
1 2015-04-30 22:42:49.0 {44:'xxxxxxxx'}
2 2015-05-06 08:53:18.0 {83:'aaaaaaaaa'}
2 2015-05-06 08:53:18.0 {175:'bbbbbbbbb'}
2 2015-05-06 08:53:18.0 {86:'cccccccccc'}
3 2015-05-13 19:57:13.0 {487:'yyyyyyyyyyy'}
3 2015-05-13 19:57:13.0 {48:'zzzzzzzzzzzzzz'}
私はRDDに変換し、しかし、誰成功にflatMap
を適用しようとしています。すべての列が返されるようにします。私はこれを試してみました:
Info.rdd.flatMap(lambda x: (x['SearchParams'].split(':'), x))
チープ・トリック: 'DFを( "comments")).withColumn( "comments"、split(regexp_replace(col "" comments ")、"、 "}、{")。as( "comments")、 "、")as( "comments")) ' – philantrovert