首先讀出的數據框爲帶有|的csv作爲分隔符:
這提供了一個數據框與您需要的基本列,除了第三個將是一個字符串。假設您將此列重命名爲_c2(第三列的默認名稱)。現在你可以拆分字符串來獲得數組了 我們也刪除了以前的列,因爲我們不再需要它了。 最後,我們使用爆炸到陣列轉向行和刪除未使用的列
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")
或階(遊離形式)
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")