gpt4 book ai didi

scala - spark将简单字符串保存到文本文件

转载 作者:行者123 更新时间:2023-12-02 04:41:00 26 4
gpt4 key购买 nike

我有一个 Spark 作业,需要将上次运行到文本文件的时间存储起来。
这必须在 HDFS 和本地 fs(用于测试)上都有效。

然而,这似乎并不像看起来那么简单。

我一直在尝试删除目录并收到“无法删除”错误消息。
尝试将简单的 sting 值存储到数据框中以进行拼花并再次返回。

这一切都太令人费解了,以至于让我后退了一步。

通过覆盖将字符串(在我的情况下为上次执行的时间戳)存储到文件的最佳方法是什么?

编辑:

我现在使用它的讨厌方式如下:

sqlc.read.parquet(lastExecution).map(t => "" + t(0)).collect()(0)


sc.parallelize(List(lastExecution)).repartition(1).toDF().write.mode(SaveMode.Overwrite).save(tsDir)

最佳答案

这听起来像是存储简单的应用程序/执行元数据。因此,保存文本文件不应该由“Spark”完成(即,不应由工作人员在分布式 Spark 作业中完成)。

放置它的理想位置是在驱动程序代码中,通常是在构建 RDD 之后。话虽如此,您不会使用 Spark API 来执行此操作,您宁愿做一些琐碎的事情,例如使用编写器或文件输出流。这里唯一的问题是你将如何阅读它 .假设您的驱动程序在同一台计算机上运行,​​应该没有问题。

如果这个值要在 future 的工作中被工作人员读取(这可能是你在 hdfs 中想要它的原因),并且你不想直接使用 Hadoop API,那么你必须确保你只有一个分区所以你最终不会得到多个具有微不足道值(value)的文件。但是,对于本地存储(它存储在执行任务的工作人员正在运行的机器上)不能这么说,管理它只会过火。

我最好的选择是使用驱动程序并在运行驱动程序的机器上创建文件(假设它与下次使用的相同),或者更好的是,将其放入数据库中。如果作业中需要此值,则驱动程序可以简单地传递它。

关于scala - spark将简单字符串保存到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37591566/

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