Pyspark 在databricks上提取tar.gz
我试图在我们的databricks环境中提取大约5 gig(内容大约35)的tar.gz。 我试图用以下方法提取它:Pyspark 在databricks上提取tar.gz,pyspark,extract,tar,databricks,Pyspark,Extract,Tar,Databricks,我试图在我们的databricks环境中提取大约5 gig(内容大约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/ 以
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\u存档(路径,路径,gz)
他们都开始了,然后一直挂着。只有当我使用最大的默认集群时,它才能工作,但我觉得它也应该在较小的集群中工作(因为它可以在我的笔记本电脑上工作)
差异集群:
- 第一组
- 工人类型:
- 14.0 GB内存,4核,0.75 DBU标准\U DS3\U v2
- 最少工作人员2最多工作人员8
- 工人类型:
- 第2组
- 工人类型:
- 28.0 GB内存,4核,1个DBU标准\U DS3\U v2
- 工人8
- 工人类型:
编辑:我再次找到这个问题并找到了答案。您可以使用单个节点为此创建自定义集群。然后它就可以正常工作。当您使用
%sh
或任何Python库时,不管您有多少工人,工作都只在驱动程序节点上完成。
我怀疑问题在于您有很多文件,将数据解包到DBFS可能是一个瓶颈
我建议首先尝试将数据解压到本地磁盘,然后将解压后的文件移动到DBFS
tarxvzf/dbfs/…/file.tar.gz-C/tmp/unpacket
然后移动:
dbutils.fs.mv(“文件:/tmp/unpacket”,“dbfs:/tmp/”,True)
从这个角度看,Databricks似乎无法处理提取tar文件的问题。