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

如何用PySpark读取hetionet-v1.0-edges.sif.gz文件?解决类型转换报错

解决PySpark读取hetionet压缩边文件的ClassCastException错误

你遇到的java.lang.ClassCastException是因为Spark的load()方法不支持直接传入gzip.GzipFile对象,它需要的是文件路径(本地或分布式存储路径),而非内存中的文件对象。以下是两种可行的读取方案:

方案1:直接让Spark读取远程压缩URL

Spark原生支持gzip压缩文件的读取,无需手动解压缩,直接传入文件URL即可:

edges_df = spark.read.format("csv") \
    .option("delimiter", "\t") \
    .option("inferSchema", "true") \
    .option("header", "true") \
    .load("https://github.com/hetio/hetionet/raw/master/hetnet/tsv/hetionet-v1.0-edges.sif.gz")

方案2:先下载到本地再读取

如果需要先本地缓存文件,可以先将压缩文件下载到本地临时路径,再让Spark读取:

import requests
import os

url = "https://github.com/hetio/hetionet/raw/master/hetnet/tsv/hetionet-v1.0-edges.sif.gz"
local_temp_path = "/tmp/hetionet-edges.sif.gz"

# 下载文件到本地
response = requests.get(url)
with open(local_temp_path, "wb") as f:
    f.write(response.content)

# Spark读取本地压缩文件
edges_df = spark.read.format("csv") \
    .option("delimiter", "\t") \
    .option("inferSchema", "true") \
    .option("header", "true") \
    .load(local_temp_path)

# 可选:清理临时文件
os.remove(local_temp_path)

说明

Spark的CSV数据源会自动识别gzip压缩格式,无需额外配置解压缩参数,只需确保路径指向正确的压缩文件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:43:08