Python Spark CSV读取中的换行符

Python Spark CSV读取中的换行符,python,apache-spark,dataframe,pyspark,Python,Apache Spark,Dataframe,Pyspark,我正在使用Spark 2.2.1版本,使用下面的python代码,我可以转义特殊字符,如@: 我想转义特殊字符,如换行符(\n)和回车符(\r)。我替换了@which\n,但它不起作用。有什么建议吗 工作: spark_df = spark.read.csv(file.csv,mode="DROPMALFORMED",inferSchema=True,header =True,escape="@") spark_df = spark.read.csv(file.csv,mode="DROPMA

我正在使用Spark 2.2.1版本,使用下面的python代码,我可以转义特殊字符,如@: 我想转义特殊字符,如换行符(\n)和回车符(\r)。我替换了@which\n,但它不起作用。有什么建议吗

工作:

spark_df = spark.read.csv(file.csv,mode="DROPMALFORMED",inferSchema=True,header =True,escape="@")
spark_df = spark.read.csv(file.csv,mode="DROPMALFORMED",inferSchema=True,header =True,escape="\n")
pandas_df = pd.read_csv("file.csv")
pandas_df = pandas_df.replace({r'\\r': ''}, regex=True)
pandas_df = pandas_df.replace({r'\\n': ''}, regex=True)
不工作:

spark_df = spark.read.csv(file.csv,mode="DROPMALFORMED",inferSchema=True,header =True,escape="@")
spark_df = spark.read.csv(file.csv,mode="DROPMALFORMED",inferSchema=True,header =True,escape="\n")
pandas_df = pd.read_csv("file.csv")
pandas_df = pandas_df.replace({r'\\r': ''}, regex=True)
pandas_df = pandas_df.replace({r'\\n': ''}, regex=True)

如果您的目标是读取包含多个换行符的文本内容的csv,那么方法就是使用spark
多行选项

我最近发布了一些代码


python语法将略有不同,但应该可以很好地工作

您可以使用熊猫来实现这一点

示例代码:

spark_df = spark.read.csv(file.csv,mode="DROPMALFORMED",inferSchema=True,header =True,escape="@")
spark_df = spark.read.csv(file.csv,mode="DROPMALFORMED",inferSchema=True,header =True,escape="\n")
pandas_df = pd.read_csv("file.csv")
pandas_df = pandas_df.replace({r'\\r': ''}, regex=True)
pandas_df = pandas_df.replace({r'\\n': ''}, regex=True)
您可以用上述代码段替换任何特殊字符

稍后,您可以根据需要将pandas_df转换为spark_df

spark_df = sqlContext.createDataFrame(pandas_df)

请你给我指出正确的链接,在那里我可以看到Scala代码。我在回答中添加了它。谢谢。要求是移除新线,并使用上述答案实现。我不能推翻你的答案,因为我没有足够的声望点数。谢谢。然而,上面的答案使用熊猫,而不是火花。这不会为巨大的csv扩展。我有spark2.2,但仍然选项“多行”不起作用。这只有在您可以使用pandas在本地机器上读取整个文件时才起作用。