我将旧数据作为CSV存储在Azure DataLake Gen2存储帐户中。我可以连接到此数据库并使用DataBricks对其进行审问。我要求在某些记录的保留期限到期后,或者如果需要将GDPR“被遗忘的权利”应用于数据时,删除这些记录。
使用Delta可以将CSV加载到Delta表中,并使用SQL查找和删除所需的行,但是保存这些更改的最佳方法是什么?理想情况下,返回原始文件,以便将数据从原始文件中删除。在创建Delta表时,我曾使用LOCATION选项将生成的Parquet格式文件持久保存到DataLake,但最好将其保留为原始CSV格式。
任何建议表示赞赏。
答案 0 :(得分:0)
在这里我要小心。被遗忘的权利意味着您需要删除数据。 Delta实际上并没有从原始文件中删除它(至少是从最初开始)-只有在数据被清理后才会发生。
删除数据的最安全方法是将所有数据读入数据框,过滤掉不需要的记录,然后使用覆盖将其写回。这样可以确保删除数据并重写相同的结构。
答案 1 :(得分:0)
在ADF中将镶木地板转换为CSV
可以使用Azure Data Factory管道中的“复制数据”任务将在ADLS Gen2位置中创建的版本化实木复合地板文件转换为CSV。
因此,您可以将CSV数据读入Delta表(位置指向Data Lake文件夹),使用SQL进行所需的更改,然后使用ADF将实木复合地板文件转换为CSV格式。
我已经尝试过了,而且行得通。唯一的障碍可能是在将CSV文件读取到Delta时检测列标题。您可以将其读取到数据框并从中创建一个Delta表。
答案 2 :(得分:0)
如果您定期运行删除操作,则将文件保存在csv中会很昂贵,因为每次读取文件并将数据框转换为Delta,然后对其进行查询,最后在过滤记录后再次保存将其保存到csv并删除Delta表。
所以我的建议是,将csv一次转换为Delta,定期执行删除操作,并仅在需要时生成csv。
此处的优点是-Delta内部以镶木地板格式存储数据,该数据以二进制格式存储数据,并允许更好地压缩和编码/解码数据。