Python 如何使用pyspark从文件中查找分隔符

Python 如何使用pyspark从文件中查找分隔符,python,apache-spark,pyspark,delimiter,Python,Apache Spark,Pyspark,Delimiter,是否有任何方法可以找到分隔符并使用spark read读取该文件。 基本上我想使用spark read从文件中读取数据 我们需要三种类型的分隔符(,;|),即(逗号、分号、管道) csv\u data=spark.read.load(“文件路径”,format=“csv”,header='true').cache() 我们可以使用.textFile获取csv文件的第一行,并捕获分隔符分配给变量 使用分隔符变量读取csv文件 示例: #sample data $ cat test.csv #

是否有任何方法可以找到分隔符并使用spark read读取该文件。 基本上我想使用spark read从文件中读取数据

我们需要三种类型的分隔符(,;|),即(逗号、分号、管道)

csv\u data=spark.read.load(“文件路径”,format=“csv”,header='true').cache()

我们可以使用
.textFile
获取csv文件的
第一行,并捕获
分隔符
分配给变量

  • 使用
    分隔符
    变量读取csv文件

示例:

#sample data
$ cat test.csv
#NAME|AGE|COUNTRY
#a|18|USA
#b|20|Germany
#c|23|USA

#read as textfile and get first row then createdataframe with stringtype
#using regexp_extract function matching only ,|; and extracting assign to delimiter
delimiter=spark.createDataFrame(sc.textFile("file_path/test.csv").take(1),StringType()).\
withColumn("chars",regexp_extract(col("value"),"(,|;|\\|)",1)).\
select("chars").\
collect()[0][0]

delimter
#u'|'

#read csv file with delimiter
spark.read.\
option("delimiter",delimiter).\
option("header",True).\
csv("file_path/test.csv").show()
#+----+---+-------+
#|NAME|AGE|COUNTRY|
#+----+---+-------+
#|   a| 18|    USA|
#|   b| 20|Germany|
#|   c| 23|    USA|
#+----+---+-------+

我在笔记本中使用了类似的东西来获取delimeter:

import re
headerList=sc.textFile("yourPath").take(1)
headerString = ''.join(headerList)

result = re.search("(,|;|\\|)", headerString)
delimiter = result.group()