当前位置: 首页 > 知识库问答 >
问题:

如何通过Scala Spark-Shell将大型RDD写入本地磁盘?

万高洁
2023-03-14

通过Scala spark-shell,我可以使用ElasticSearch-Hadoop-5.5.0连接器访问Elasticsearch db。

val myRdd = sc.esRDD("myIndex/type", myESQuery)

是否有一种方法可以增量地导出数据(例如,一次100k条记录),这样我就不会使系统内存过载?

共有1个答案

马航
2023-03-14

使用saveastextfile时,可以将文件路径作为“file://path/to/output”传递到本地保存。

另一个选择是使用rdd.tolocaliterator,这将允许您在驱动程序上遍历rdd。然后可以将每一行写入文件。这种方法避免了一次拉入所有记录。

 类似资料:
  • 当我从Cassandra加载数据以触发Rdd并在Rdd上执行一些操作时,我知道数据将分布到多个节点中。在我的例子中,我希望将这些rdds从每个节点直接写到它的本地Cassandra dB表中,无论如何都要这样做。 如果我进行正常的rdd收集,所有来自spark节点的数据将被合并并返回到带有驱动程序的节点。我不希望这种情况发生,因为数据流从节点返回驱动节点可能需要很长时间,我希望数据直接保存到本地节

  • 按照建议,我在我的中创建了一个文件 要能够运行。 当我运行,我得到以下输出(使用选项): 看起来该命令运行“成功”,但在我挂载的本地目录中找不到文件,即。然而,挂载必须工作,因为它成功地连接到数据库,即容器能够访问和读取。 首先,我认为我可能必须“告诉”Docker允许在我的磁盘上写入,但似乎应该支持这一点[从Docker Hub上的描述来看]: /liquibase/changelog卷还可用于

  • 我正试图通过adb shell在我的三星Note 3上显示本地图像。 ,但仍然不起作用。有人能帮我吗,真的很感激!

  • 我在使用扩展将服务器连接到域时遇到了问题。我不确定这出了什么问题,可以使用帮助。 问题是: 我有一个powershell脚本,它在整个网络的核心是相当标准的,当我登录到新服务器并运行它时,它会将我的计算机加入到一个域。 我用它创建了一个powershell文件,将其保存到blob存储中,并编写了一个脚本,将一堆脚本设置为扩展名,然后将其与其他文件一起下载到机器进行初始处理。一旦下载,我就出现了一个

  • 问题内容: 我正在尝试将大的ResulSet(〜1mm行)写入单个文件。在Java 1.6中,有没有一种首选/有效的方法来做到这一点? 问题答案: 这取决于所使用的JDBC驱动程序。您需要指示JDBC驱动程序 不要事先将其全部加载到Java内存中,而应在每次调用时逐行加载。然后,在循环内部,您需要 立即 将数据写入文件,而不是将其保存在文件中。 不清楚您使用的是哪种JDBC驱动程序,但是例如,可以

  • 问题内容: 我是docker世界的新手。我必须调用一个通过Docker容器获取命令行参数的shell脚本。例如:我的shell脚本如下所示: Dockerfile看起来像这样: 我不确定如何在运行容器时传递参数 问题答案: 使用相同 使用现有的Dockerfile构建映像: 使用参数或其他方式运行映像。