与这里Read a file in pyspark with custom column and record delmiter的答案相同
我会将它作为纯文本文件读取到 rdd 中,然后在作为换行符的字符上拆分。然后将其转换为数据框
像这样
rdd1= (sc
.textFile("/jupyter/nfs/test.txt")
.flatMap(lambda line: line.split("**"))
.map(lambda x: x.split(";"))
)
df1=rdd1.toDF(["a","b","c"])
df1.show()
+---+---+---+
| a| b| c|
+---+---+---+
| a1| b1| c1|
| a2| b2| c2|
| a3| b2| c3|
+---+---+---+
或者如果这样
rdd2= (sc
.textFile("/jupyter/nfs/test.txt")
.flatMap(lambda line: line.split("**"))
.map(lambda x: [x])
)
df2=(rdd2
.toDF(["abc"])
.withColumn("a",f.split(f.col("abc"),";")[0])
.withColumn("b",f.split(f.col("abc"),";")[1])
.withColumn("c",f.split(f.col("abc"),";")[2])
.drop("abc")
)
df2.show()
+---+---+---+
| a| b| c|
+---+---+---+
| a1| b1| c1|
| a2| b2| c2|
| a3| b2| c3|
+---+---+---+
test.txt 的样子
a1;b1;c1**a2;b2;c2**a3;b2;c3