当前位置: 首页 > 知识库问答 >
问题:

从Synapse笔记本覆盖Azure数据湖Gen 2中的文件引发异常

贲招
2023-03-14

作为从Azure Database ricks迁移到Azure Synapse Analytics Notebook的一部分,我面临下面解释的问题。

使用以下命令从Azure Datalake Storage Gen 2读取CSV文件并将其分配给pyspark dataframe。

df = spark.read.format('csv').option("delimiter", ",").option("multiline", "true").option("quote", '"').option("header", "true").option("escape", "\\").load(csvFilePath)

处理完此文件后,我们需要覆盖它,并使用以下命令。

df.coalesce(1).write.option("delimiter", ",").csv(csvFilePath, mode = 'overwrite', header = 'true')

它的作用是,删除路径"csvFilePath"上的现有文件,然后失败并出现错误,"Py4JJavaError:调用时出错o617.csv."

我注意到的事情:

  1. 一旦路径“csvFilePath”处的CSV文件被覆盖命令删除,数据框“df”中的数据也会被删除。
  2. 看起来它在运行时引用文件,而传统上在数据库中我们没有这个问题并且覆盖运行成功。

[Synapse Notebook在写入命令时返回错误。][1][1]:https://i.stack.imgur.com/Obj9q.png

共有1个答案

洪光霁
2023-03-14

建议执行装载数据存储。请参阅以下文档。

https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-use-databricks-spark

 类似资料:
  • 那么,如果仍然需要存储帐户访问密钥,服务帐户的目的是什么 还有一个主要问题-是否可以完全删除存储帐户访问密钥并仅使用服务主体?

  • 我试图实现与此相同的功能,所以除了我的文件位于Azure Data Lake Gen2,我在Databricks Notebook中使用pyspark之外,将Spark dataframe保存在hdfs位置上的单个文件中。 下面是我用来重命名文件的代码段 1)重命名databricks(pyspark)写入Azure DataLakeGen2的文件是否正确,如果不正确,我还能如何完成?

  • 问题内容: 我试图从产品的Facebook页面中提取一些数据并将其全部转储到文本文件中,但是我发现该文件不断用数据覆盖自身。我不确定这是一个分页问题还是必须制作多个文件。 这是我的代码: 知道为什么会这样吗? 问题答案: 这用于在文件模式下使用文件运算符覆盖可以使用append方法的内容 可以这样做 修改: 覆盖现有文件 即 File1.txt: 码: python运行后的File1.txt: 那

  • 我正在使用Azure Blob存储来上传/下载文件。问题是,如果我上传到azure blob中的任何新文件与已经上传的文件同名,那么它会自动覆盖以前上传的文件的内容。 null 因此,如果我上传一个名为“file1.docx”的新文件,它们有不同的内容。那么blob存储将替换以前上传的file1.docx。所以在这种情况下,我丢失了以前上传的文件。 blob存储有什么方法可以自动检测到有重复,这样

  • 所以我使用了DataInputStream、FileInputStream、BufferInputStream、FileReader、BufferedReader、Scanner。它们都抛出FileNOtFoundException或CorruptedStreamException。