Python PySpark读取带有自定义记录分隔符的CSV文件
在pyspark中读取csv文件时,是否有任何方法可以使用自定义记录分隔符。在我的文件中,记录之间用Python PySpark读取带有自定义记录分隔符的CSV文件,python,python-3.x,pyspark,apache-spark-sql,Python,Python 3.x,Pyspark,Apache Spark Sql,在pyspark中读取csv文件时,是否有任何方法可以使用自定义记录分隔符。在我的文件中,记录之间用**分隔,而不是换行符。在将csv读入PySpark数据帧时,有没有办法使用此自定义行/记录分隔符?答案与此处相同 我会将它作为纯文本文件读入rdd,然后在换行符字符上拆分。然后将其转换为数据帧 像这样 rdd1= (sc .textFile("/jupyter/nfs/test.txt") .flatMap(lambda line: line.sp
**
分隔,而不是换行符。在将csv读入PySpark数据帧时,有没有办法使用此自定义行/记录分隔符?答案与此处相同
我会将它作为纯文本文件读入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
您是否尝试了
(“delimiter”、“**”)作为列标识符不起作用的,
,可以提供5
行的示例数据将问题命名为。请帮我翻译一下