Apache spark ApacheSpark—解析数据并将列转换为行

Apache spark ApacheSpark—解析数据并将列转换为行,apache-spark,Apache Spark,我需要将列转换为行。请在spark scala code中帮助我满足以下要求。输入文件为|分隔符,其中一列具有逗号分隔符值。根据逗号分隔符,我需要将它们转换为行 我的输入记录: c11 | c12 | a,b | c14 c21 | c22 | a、c、d | c24 预期产出: a、 c11,c12,c14 b、 c11,c12,c14 a、 c21,c22,c24 c、 c21,c22,c24 d、 c21,c22,c24 谢谢 Siva首先将数据帧读取为csv,并使用|作为分隔符: 这提供

我需要将列转换为行。请在spark scala code中帮助我满足以下要求。输入文件为|分隔符,其中一列具有逗号分隔符值。根据逗号分隔符,我需要将它们转换为行

我的输入记录:

c11 | c12 | a,b | c14

c21 | c22 | a、c、d | c24

预期产出:

a、 c11,c12,c14

b、 c11,c12,c14

a、 c21,c22,c24

c、 c21,c22,c24

d、 c21,c22,c24

谢谢


Siva

首先将数据帧读取为csv,并使用|作为分隔符:

这提供了一个dataframe,其中包含除第三列(即字符串)之外所需的基本列。假设您将此列重命名为第三列的默认名称。现在可以拆分字符串以获得数组 我们还删除了上一列,因为我们不再需要它了。 最后,我们使用explode将数组转换为行,并删除未使用的列

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")