You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Databricks中使用gz文件创建DataFrame?

在Azure Databricks中使用GZ压缩文件创建DataFrame的正确方法

你的代码核心问题是混淆了压缩格式和数据格式:.gz只是文件的压缩后缀,并非数据存储格式(如Parquet、CSV)。Spark会自动识别并解压GZ文件,但你需要根据压缩包内实际的数据格式来指定对应的读取格式,以下是几种常见场景的实现:

场景1:压缩包内为Parquet格式数据

如果原文件是Parquet格式后被GZ压缩,你的代码格式本身正确,若加载失败可显式指定压缩类型验证:

df = spark.read.format("parquet") \
    .option("compression", "gzip") \
    .load("dbfs:/mnt/datascience/information-mart/Internal/CTR/Product/BASE_CTR_DEAL_DIM/test_20240423.gz")
df.createOrReplaceTempView("vw_test")

场景2:压缩包内为CSV格式数据

若压缩包是CSV文件的GZ压缩包,需指定CSV格式并根据数据特性配置参数:

df = spark.read.format("csv") \
    .option("header", "true")  # 数据含表头则设为true,否则为false
    .option("sep", ",")        # 按实际数据分隔符调整,如\t代表制表符
    .option("inferSchema", "true")  # 自动推断字段类型,生产环境建议手动指定schema
    .load("dbfs:/mnt/datascience/information-mart/Internal/CTR/Product/BASE_CTR_DEAL_DIM/test_20240423.gz")
df.createOrReplaceTempView("vw_test")

场景3:压缩包内为JSON格式数据

针对JSON格式的GZ压缩文件,直接指定JSON格式读取即可:

df = spark.read.format("json") \
    .option("inferSchema", "true") \
    .load("dbfs:/mnt/datascience/information-mart/Internal/CTR/Product/BASE_CTR_DEAL_DIM/test_20240423.gz")
df.createOrReplaceTempView("vw_test")

场景4:压缩包内为纯文本格式数据

如果是纯文本文件的GZ压缩包,使用text格式读取:

df = spark.read.format("text").load("dbfs:/mnt/datascience/information-mart/Internal/CTR/Product/BASE_CTR_DEAL_DIM/test_20240423.gz")
df.createOrReplaceTempView("vw_test")

关键注意事项

  • 先确认GZ包内的实际数据格式:可在Databricks UI中右键目标文件,选择"Preview"查看内容结构。
  • Spark原生支持GZ、Snappy等主流压缩格式,无需额外解压操作,只需匹配正确的数据格式即可。
  • 若需加载目录下多个同格式GZ文件,直接指定目录路径(如dbfs:/mnt/.../BASE_CTR_DEAL_DIM/)即可,Spark会自动批量加载。

内容的提问来源于stack exchange,提问作者dasa m

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 19:18:29