在 Databricks 中将 gzip 文件另存为 table

Saving a gzip file as a table in Databricks

我想通过以下 PySpark 命令将 gzip 文件保存为 Databricks 中的 Hive table:

df = spark.read.csv(".../Papers.txt.gz", sep="\t")
df.write.saveAsTable("...")

gzip 文件 Papers.txt.gz 解压缩后的重量约为 60GB(这是一个很大的 .txt 文件,实际上取自 here)并且 Spark 集群相当大(850GB,112 核) .

问题是它需要很长时间才能保存为 table(超过 20 分钟),这让我中止了操作,因为我担心我会关闭集群.

这个要求看起来很标准,但是,这里有什么我应该注意的吗?

提前致谢。

问题是 gzip 文件不可拆分(默认情况下),因此该文件的所有处理仅在一台机器上进行。所以集群大小在这里没有多大帮助。

如果您可以解压缩外部文件并将其解压缩到 DBFS 上,那么 Spark 将能够分块读取它并进行并行处理。这可以直接在笔记本中的“普通”Databricks 中完成(这可能会花费很多时间,但您可以使用单节点集群以避免为大集群付费):

%sh
gzip -d /dbfs/path_to/Papers.txt.gz

P.S。您可以在以下

中阅读有关此问题的更多信息