Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PySpark读取带有自定义记录分隔符的CSV文件_Python_Python 3.x_Pyspark_Apache Spark Sql - Fatal编程技术网

Python 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

在pyspark中读取csv文件时,是否有任何方法可以使用自定义记录分隔符。在我的文件中,记录之间用
**
分隔,而不是换行符。在将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
行的示例数据将问题命名为。请帮我翻译一下