2017-11-03 4 views
0

で効率的に文字列に配列を変換するために、私は、次のスキーマとDF有する:、COL2は、配列[1件の#Bを、2#Bの列のいずれかで方法のpython/pyspark

root 
|-- col1: string (nullable = true) 
|-- col2: array (nullable = true) 
| |-- element: string (containsNull = true) 

あります、3#c]。私はこれをこの文字列フォーマット1#b、2#b、3#cに変換したいと思います。

私は現在、これは仕事を取得しますが、それは時間を取っても非効率ですされ、次のスニペット

df2 = (df1.select("*",explode(col2)).drop('col2')) 
df2.groupBy("col1").agg(concat_ws(",", collect_list('col')).alias("col2")) 

を介してこれをやっています。より良い選択肢がありますか?

答えて

1

あなたはこのように、列に直接concat_wsを呼び出すことができます。

df1.withColumn('col2', concat_ws(',', 'col2'))