微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从谷歌云存储读取 .txt 文件

如何解决从谷歌云存储读取 .txt 文件

我是谷歌云平台和 Spark 的新手。我正在尝试从谷歌云存储读取 .txt 文件。但是将其下载为 blob 对象后,我无法对其进行迭代。我的要求是将文件作为一个简单的 txt 文件逐行读取。请看下面的代码


import pyspark
from pyspark import SparkConf,SparkContext
from google.cloud import storage
import sys
conf=SparkConf().setMaster("local").setAppName("Popular Movies")
sc=SparkContext(conf=conf)

bucket_name = (sys.argv[1])
destination_blob_name = (sys.argv[2])

storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(destination_blob_name)
 
downloaded_blob = blob.download_as_string()
print(downloaded_blob)


print(blob)
def loadMovieNames():
    movies={}
    for line in blob:
        fields=line.split("|")
        print(fields)
        movies[int(fields[0])]=fields[1]
    return movies

myMovies=loadMovieNames()
myRDD=sc.parallelize([myMovies])

print(myRDD.collect())

解决方法

由于您已经将 blob 转换为字符串,因此您只需对该字符串应用 splitlines() 以逐行遍历它。

def loadMovieNames():
    movies = {}
    for line in downloaded_blob.splitlines():
        fields = line.split("|")
        print(fields)
        movies[int(fields[0])] = fields[1]
    return movies

它的作用是将单个字符串拆分为一个列表,在换行符处拆分。

另外,对于您的下一个问题,请准确提供您当前代码的情况。提供源数据(例如,您从 GCS 下载的文件的清理内容)也有很大帮助,因为社区无需猜测。

记住,问题越好,答案就越好......

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。