Python 如何将文件从谷歌云加载到作业

Python 如何将文件从谷歌云加载到作业,python,google-cloud-platform,pyspark,pickle,Python,Google Cloud Platform,Pyspark,Pickle,我将文件存储在驱动器“/content/drive/My drive/BD-CW2”文件名中 pickled与job read_rdd.py相同 但当我在集群上运行作业时,我发现 回溯(最近一次调用上次):文件 “/tmp/18dcd2bf5c104f01b6d25ea6919b7cfc/readrdd.py”,第55行,in read_RDD(sys.argv[1:])文件“/tmp/18dcd2bf5c104f01b6d25ea6919b7cfc/read_RDD.py”,第32行,在 读

我将文件存储在驱动器“/content/drive/My drive/BD-CW2”文件名中 pickled与job read_rdd.py相同

但当我在集群上运行作业时,我发现

回溯(最近一次调用上次):文件 “/tmp/18dcd2bf5c104f01b6d25ea6919b7cfc/readrdd.py”,第55行,in read_RDD(sys.argv[1:])文件“/tmp/18dcd2bf5c104f01b6d25ea6919b7cfc/read_RDD.py”,第32行,在 读

读取作业内部文件的代码

RDDFromPickle  = open('pickleRdd', 'rb')

RDDFromPickle = pickle.load(RDDFromPickle)
如何将上面的代码重定向到 从驱动器(/content/drive/My drive/BD-CW2)? 或者将文件从驱动器移动到群集,以便作业可以访问它? 当我在colab上运行时一切正常,但当我在集群上运行时无法访问

容易的方法似乎是调整

 RDDFromPickle  = open('/content/drive/My Drive/BD-CW2/pickleRdd', 'rb')

但是我如何通过google drive location?

使用模块osabspath如下:

import os.path
RDDFromPickle = open(os.path.abspath('/content/drive/My Drive/BD-CW2/pickleRdd', 'rb'))
RDDFromPickle = pickle.load(RDDFromPickle)


由于您使用的是Google云平台,我猜您正在将pyspark文件部署到Cloud Dataproc。如果是这样,我建议将您的文件上载到Google云存储中的buket,然后使用以下代码从那里读取此文件(猜测它是CSV文件):

从pyspark.sql导入SparkSession
火花=火花会话\
建筑商先生\
.appName('dataproc-python-demo')\
.getOrCreate()
df=spark.read.format(“csv”).选项(“标题”,
“false”).load(“gs:///file.csv”)
count_value=df.rdd.map(lambda行:(行._c0,行._c1)).count()
打印(计数值)
在上面的代码中,它创建了一个Dataframe,我将其转换为RDD类型来格式化值,但您也可以使用Dataframe类型来完成

请注意_c0和_c1是CSV文件没有标题时获得的列的默认名称。获得类似的代码后,可以通过以下方式将其提交到dataproc集群:

gcloud dataproc jobs submit pyspark --cluser <cluster_name> --region 
<region, example us-central1> gs://<bucket>/yourpyfile.py
gcloud dataproc作业提交pyspark--cluser--region
gs:///yourpyfile.py
要在Dataproc中提交新作业,可以参考此链接[1]


[1]

嗨,它将不起作用,我仍在获取文件“/tmp/8dcaa3f4bf634ef4912f6f4b25e155cf/read\rdd.py”,在read\rdd(sys.argv[1:])文件/tmp/8dcaa3f4bf634ef4912f6f4b25e155cf/read\rdd.py”第37行,在read\rdd-rddrdfrompickle=open(os.path.abspath('/content/drive/My drive/My drive/BD-CW2/rdd'),'rb'notfounderror:[Errno 2]没有这样的文件或目录:'/content/drive/My drive/BD-CW2/pickleRdd'请编写用于此任务的完整代码块。获取完整信息以进行准确调试非常重要。%%writefile read_cloud.py import pickle import os.path RDDFromPickle=open(os.path.abspath('/content/drive/My drive/BD-CW2/pickleRdd'),'rb')#RDDFromPickle=open(RDDFromPickle,'rb')RDDFromPickle=pickle.load(RDDFromPickle)要运行job!gcloud dataproc jobs submit pyspark--cluster$cluster--region$region\./read_cloud.py\对格式化表示歉意首先,请将您的代码放在一对“``之间,以正确格式化您的问题/评论。您的OP格式很好,但您的评论无助于解决问题。其次,您的合作伙伴是什么pickleRdd的内容?看起来它调用了read_rdd.py,这无法正确获取您的路径。感谢详细解释,我使用的是实际Pickle文件,但在您提供了所有详细信息后,我可以轻松管理所有内容
gcloud dataproc jobs submit pyspark --cluser <cluster_name> --region 
<region, example us-central1> gs://<bucket>/yourpyfile.py