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

将CSV压缩为dbfs中的ZIP文件(数据块文件存储)

安明亮
2023-03-14

我正在尝试将位于azure datalake中的csv压缩为zip。该操作是使用datricks中的python代码完成的,我在其中创建了一个挂载点以将dbfs与datalake直接关联。

这是我的代码:

import os
import zipfile 

csv_path= '/dbfs/mnt/<path>.csv'
zip_path= '/dbfs/mnt/<path>.zip' 

with zipfile.ZipFile(zip_path, 'w') as zip:
    zip.write(csv_path)  # zipping the file

但是我收到了这个错误:

OSError: [Errno 95] Operation not supported

有什么办法吗?

提前感谢。

共有2个答案

郭洋
2023-03-14

在重现此内容时,我在下面遇到了相同的错误。

但是我可以将csv文件压缩成zip格式,方法是先转换成dataframe,然后再转换成zip格式,如下所示。

df=spark.read.csv("dbfs:/mnt/ok/csv1.csv")
df.coalesce(1).write.option("compression","gzip").csv("/dbfs/mnt/ok/myzip2.zip")

请不要与上面的csv路径混淆,在这里我错误地使用了ADLS的另一个csv。

但是coalesce将zip中的文件名作为部分名称。要重命名它,请使用dbuits.fs.mv(old_path,new_path)

  • 首先使用 ls
    获取 csv 文件路径
  • 然后使用此路径重命名为如下所示的新路径。
old_name = r"/dbfs/mnt/ok/myzip2.zip/part-00000-tid-1285084120372550072-c8b0b7bd-b3b4-4432-8575-4e33e5328ec9-6-1-c000.csv.gz"
new_name=r"/dbfs/mnt/ok/myzip2.zip/mycsv.csv.gz"
dbutils.fs.mv(old_name, new_name)

上面的代码是由亚历克斯·奥特从这个线程引用的。

景温书
2023-03-14

不,这不可能像你那样做。主要原因是本地DBFS API有局限性——它不支持创建zip文件时所需的随机写入。

解决方法是将zip文件输出到驱动程序节点的本地磁盘,然后使用dbutils.fs.mv将文件移动到DBFS,如下所示:

import os
import zipfile 

csv_path= '/dbfs/mnt/<path>.csv'
zip_path= '/dbfs/mnt/<path>.zip' 
local_path = '/tmp/my_file.zip'

with zipfile.ZipFile(local_path, 'w') as zip:
    zip.write(csv_path)  # zipping the file
dbutils.fs.mv(f"file:{local_path}", zip_path)
 类似资料:
  • 问题内容: 我正在下载包含XML的压缩文件,由于延迟要求,我希望避免在操作之前将zip文件写入磁盘。但是,这不足以满足我的需求。没有办法说“这是一个zip文件的字节数组,请使用它”而不将其转换为流,并且它不可靠,因为它会扫描条目标头(请参阅EDIT下面的讨论,以了解为什么它不可靠)。 我尚无法访问要处理的zip文件,因此我不知道我是否能够通过来处理它们,因此我需要找到一种适用于任何有效ZIP文件的

  • 我使用Ubuntu OS中的RawTherapee应用程序将RAW文件转换为TIF。 是否存在任何专有问题或与Adobe名称使用有关的任何问题?我喜欢使用开源工具和应用程序。请把你关心的问题告诉我。

  • 我一直在寻找这个问题,但我找不到任何我可以使用的回应。 并合并到zip中以进行压缩(根据https://docs.oracle.com/javase/8/docs/api/java/util/zip/ZipOutputStream.html#setMethod-int-,ZipEntry中的DEFLETED)。在这种情况下,如何? 我从谷歌和其他搜索者那里获得的关于用java压缩zip文件的大部分

  • 本文向大家介绍Python压缩解压缩zip文件及破解zip文件密码的方法,包括了Python压缩解压缩zip文件及破解zip文件密码的方法的使用技巧和注意事项,需要的朋友参考一下 python 的 zipfile 提供了非常便捷的方法来压缩和解压 zip 文件。 例如,在py脚本所在目录中,有如下文件: 将 readability 目录中的文件压缩到脚本所在目录的 readability.zip

  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

  • 我有一个包含一些子目录的目录。我可以看到目录中带有“gci-Recurse *| %{ Write-host$_}”的文件。在这个给定的列表中有一些zip文件。我想在使用“展开存档”时将这些zip文件解压缩到一个名为zip文件的目录中。 如何将调用“gci-Recurse*|%{write host${}”与“Expand Archive”结合起来。