首先读出的数据框为带有|的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")