在Databricks上解压tar.gz文件

3

我正在尝试在我们的数据分析环境中解压一个大约5G(内容约为35)的.tar.gz文件。我已经尝试过以下方法进行解压:

tar = tarfile.open(blob_storage_location', 'r:gz')
tar.extractall()
tar.close()

我们还将它复制到我们的Databricks环境中并进行了尝试。

同时也进行了以下尝试:

%sh
tar xvzf $(find /dbfs/tmp/ -name '*.tar.gz' -print ) -C /dbfs/tmp/

并且:

shutil.unpack_archive(path, path, gz)

它们都开始运作但是一直卡住。只有当我使用我们最大的默认集群时它才能正常运作,但我感觉它应该也可以在一个更小的集群上运行(因为它可以在我的笔记本上运行)。

不同的集群:

  • 集群 1
    • 工作节点类型:
      • 14.0 GB内存,4个内核,0.75 DBU Standard_DS3_v2
      • 最少工作节点 2 最多工作节点 8
  • 集群 2
    • 工作节点类型:
      • 28.0 GB内存,4个内核,1 DBU Standard_DS3_v2
      • 工作节点 8

如果能有任何建议让它在更小的集群上运行将不胜感激。

编辑:我又找到了这个问题并找到了答案。您可以创建一个仅带有单个节点的自定义集群,然后它就可以正常工作了。


这个答案来看,似乎Databricks无法处理提取tar文件的操作。 - philMarius
1个回答

1
当您使用%sh或任何Python库时,无论您有多少个工作节点,工作都只在驱动程序节点上完成。我怀疑问题在于您有许多文件,并且将数据解压缩到DBFS可能成为瓶颈。
我建议先将数据解压缩到本地磁盘,然后再将解压缩的文件移动到DBFS。
tar xvzf /dbfs/..../file.tar.gz -C /tmp/unpacked

然后移动:

dbutils.fs.mv("file:/tmp/unpacked", "dbfs:/tmp/", True)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接