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

DataBricks-将更改保存回DataLake(ADLS Gen2)

邵刚洁
2023-03-14

我将旧数据作为CSV存储在Azure DataLake Gen2存储帐户中。我可以连接到这个,并使用数据记录卡进行查询。我有一个要求,一旦某些记录的保留期到期,或者如果GDPR“被遗忘的权利”需要应用于数据,我就要删除这些记录。

使用Delta,我可以将CSV加载到Delta表中,并使用SQL查找和删除所需的行,但保存这些更改的最佳方法是什么?理想情况下,返回到原始文件,以便从原始文件中删除数据。我在创建Delta表时使用了LOCATION选项,以将生成的拼花格式文件持久化到DataLake,但最好将其保持为原始CSV格式

任何建议不胜感激。

共有3个答案

纪翰
2023-03-14

如果定期运行删除操作,则将文件保存在csv中的成本很高,因为每次读取文件并将数据帧转换为增量,然后对其进行查询,最后在过滤记录后,再次将其保存到csv并删除增量表。

所以我在这里的建议是,将csv转换为Delta一次,定期执行删除并仅在需要时生成csv。

这里的优点是-Delta内部以拼花格式存储数据,以二进制格式存储数据,并允许更好地压缩和编码/解码数据。

邴和雅
2023-03-14

在ADF中将拼花地板转换为CSV

可以使用Azure数据工厂管道中的复制数据任务将在ADLS Gen2位置创建的版本化拼花文件转换为CSV。

因此,您可以将CSV数据读入Delta表(位置指向Data Lake文件夹),使用SQL执行所需的更改,然后使用ADF将拼花文件转换为CSV格式。

我试过这个,效果很好。唯一的障碍可能是在将CSV文件读取到增量时检测列标题。您可以将其读取到数据帧并从中创建增量表。

司马自明
2023-03-14

我在这里会小心的。被遗忘的权利意味着您需要删除数据。Delta实际上并没有将其从原始文件中删除(至少最初是这样)-这只会在数据清空后发生。

删除数据最安全的方法是将所有数据读取到数据框中,过滤掉不需要的记录,然后使用覆盖将其写回。这将确保删除数据并重新写入相同的结构。

 类似资料:
  • 问题内容: 我有一个具有表的应用程序,当您单击表中的项目时,它会使用其数据(FieldGroup)填充一组文本字段,然后您可以选择保存更改, 我想知道如何保存更改用户对我的postgres数据库进行的更改 。我正在为此应用程序使用vaadin和hibernate模式。到目前为止,我已经尝试做 我努力了 而且我也尝试过 最后两个给我以下错误 问题答案: 我已经弄清楚了如何对数据库进行更改,下面是一些

  • 问题内容: 那可能吗?例如,用户将新的项目/元素添加到arraylist中(bufferedreader进程),并且肯定会发生更改。我的问题是,即使用户多次对arraylist进行更改,也可能永久关闭该列表,即使他们关闭程序并重新打开它也一直存在。 注意:不得使用.txt 很抱歉提出这样的问题,但我对此很好奇。谢谢! 问题答案: 程序停止时,将释放它使用的所有内存,包括ArrayList。除了不关

  • 一个被提交了的改动会被永久地保存在仓库(repository)中。然而,在你日常工作中你经常需要“暂时地”保存一下你的一些本地改动。例如,如果你正在开发一个新的功能,但是与此同时又得到了一个错误报告,并且需要马上修复它,而你现在的本地改动又和这个错误毫无关系,因此你必须暂时地停止新功能的开发,来开始着手修复这个错误。并且你还想要保存那些已完成的开发工作,以便之后能继续来完成它。 像这样的情况会随时

  • git add / git commit / git diff / git stash / .gitignore “保存”这个概念在 Git 等版本控制系统和 Word 等文本编辑应用中不太一样。传统软件里的“保存”在 Git 里被叫做“提交”(commit)。 我们常说的的保存可以理解成在文件系统中覆盖一个已有的文件或者创建一个新的文件。而在 Git 中,提交这个操作作用于若干个文件和目录。 在

  • 我正在使用Azure Databricks中的spark解析Azure blob存储中的文件。blob作为DBFS挂载。现在我在笔记本上使用硬编码文件名(dbfs文件名)。但是每当创建新blob时,我希望用新的dbfs名称触发笔记本。我检查了使用Azure函数我可以得到一个blob触发器。我可以从Azure函数启动databricks笔记本/作业吗?对blob的操作需要相当长的时间。在这种情况下使

  • 问题内容: 我需要在ASP .Net应用程序中实现“未保存的更改”提示。如果用户修改了Web表单上的控件,并试图在保存之前导航离开,则将出现提示,警告他们尚未保存更改,并为他们提供取消并保留在当前页面上的选项。如果用户未触摸任何控件,则不应显示该提示。 理想情况下,我想用JavaScript实现此功能,但是在我开始滚动自己的代码之前,是否有任何现有的框架或推荐的设计模式来实现这一目标?理想情况下,