gpt4 book ai didi

python - 在 python 中使用 pydoop 保存 gzip 文件

转载 作者:太空宇宙 更新时间:2023-11-04 02:57:32 25 4
gpt4 key购买 nike

我正在使用 pydoop 在 pyspark 中读取和写入文件。我想以 gzip 格式编写作业输出。我当前的代码如下所示:

def create_data_distributed(workerNum,outputDir, centers, noSamples = 10, var = 0.1):
numCenters = centers.shape[0]
dim = centers.shape[1]
fptr_out = hdfs.hdfs().open_file(os.path.join(outputDir, ("part-%05d" % workerNum) ) + ".txt", "w")
for idx in range(noSamples):
idxCenter = np.random.randint(numCenters)
sample = centers[idxCenter] + np.random.normal(size=(1,dim))
# output the sample. Need to
fptr_out.write("%d, " % idxCenter)
for i in range(len(sample[0])):
fptr_out.write("%f " %(sample[0][i]))
if (i < (len(sample[0])-1)):
fptr_out.write(",")
fptr_out.write("\n")
fptr_out.close()
return

如何使此代码打开和写入 gzip 文件而不是常规文件?

谢谢!!!

最佳答案

我希望您可以通过包装返回的类文件对象来做到这一点:

fptr_out = hdfs.hdfs().open_file(...)

gzip.GzipFile喜欢:

hdfs_file = hdfs.hdfs().open_file(...)
fptr_out = gzip.GzipFile(mode='wb', fileobj=hdfs_file)

请注意,您必须对两者都调用 close:

fptr_out.close()
hdfs_file.close()

with 语句更清楚:

output_filename = os.path.join(outputDir, ("part-%05d" % workerNum) ) + ".txt.gz"
with hdfs.hdfs().open_file(output_filename, "wb") as hdfs_file:
with gzip.GzipFile(mode='wb', fileobj=hdfs_file) as fptr_out:
...

这一切都未经测试。使用风险自负。

关于python - 在 python 中使用 pydoop 保存 gzip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41932043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com