apachespark在dataproc上删除集群后检索存储在gcs中的表

bvuwiixz  于 2021-05-29  发布在  Spark
关注(0)|答案(2)|浏览(418)

我是谷歌云控制台的新手,所以这可能是一个微不足道的问题。我正在使用免费层gcp为我的数据科学项目。我正在dataproc集群上运行python笔记本。我使用pyspark作为sparkDataframe加载了存储在外部gcs bucket中的数据,并使用“df.repartition(100).write.saveastable()”以“orc”格式存储在与我的项目相关联的gcs bucket中,使用“path”选项。之后,我删除了我的集群并创建了一个新集群。现在,我无法使用pyspark从gcs bucket加载分区表。我甚至将sparksession配置“spark.sql.warehouse.dir”位置设置为以前保存表的路径。但是,即使在关闭并重新启动sparksession之后,我仍然能够使用“spark.sql.warehouse.dir”访问创建它的集群中的分区表,并访问保存的表路径(使用spark.sql)。但是由于某些原因,在删除并创建一个新的集群之后,我无法执行同样的操作。请帮忙。我花了几个小时,但什么也找不到。编辑:代码截图

zphenhs4

zphenhs41#

我试过spark.read.orc(“gs://path to bucket\uufolder”),它对我很有用。

m2xkgtsf

m2xkgtsf2#

问题是表元数据存储在hivemetastore中,请参阅此文档。删除集群后,元数据随metastore一起消失,但数据保存在gcs中。
在新集群中,您可以首先直接读取gcs文件,例如:

df = spark.read.orc('gs://path-to-folder')

然后创建一个临时视图以供进一步查询,请参见以下文档:

df.createOrReplaceTempView("my_table")

sqlDF = spark.sql("SELECT * FROM my_table limit 10")
sqlDF.show()

相关问题