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

Spark read csv-Java中的多个S3路径

上官高畅
2023-03-14

我正在尝试读取多个s3目录(每个目录将有多个文件在其中)使用Spark的读取csv方法,但我得到了错误,因为s3路径有一些非法字符的。我已经检查了相关的问题,但没有看到Java的解决方案。无法为Java实现相同的解决方案。

DataSet<Row> DocsTemp  = null;
String scanResultFolder = "\"" + "s3a://somebucket/Dir1/" + "\",\"" + "s3a://somebucket/Dir2/" + "\"";
DocsTemp = spark.read().csv(scanResultFolder);

但在运行时,它将整个字符串(scanResultFolder)视为单个路径并给出错误。

请建议我实现此功能的正确方法。

共有1个答案

袁增
2023-03-14

您需要传入Java数组,而不仅仅是逗号分隔的字符串(请参见https://spark.apache.org/docs/latest/api/Java/org/apache/spark/sql/dataframereader.html#csv-java.lang.string...-):

DocsTemp = spark.read().csv({"s3a://somebucket/Dir1/", "s3a://somebucket/Dir2/"});
 类似资料:
  • 问题内容: 我对此进行了一些讨论,但还不太了解正确的解决方案:我想将S3中的数百个文件加载到RDD中。这是我现在的做法: 在不使用实际的阅读客户端: 我从在Scala中针对相同问题看到的答案中“翻译”了一下。我认为也可以将整个路径列表传递给,但是我不确定哪种是最佳做法。 问题答案: 根本的问题是,在s3中列出对象的速度确实很慢,并且每当执行树遍历时,看起来像目录树的方式都会降低性能(就像路径的通配

  • 在一个Intranet站点上,我正在将相当多的图像从文件系统移动到MySQL中,并编写了一个小函数来提供帮助。没有错误,但插入的图像也没有错误,因此我需要帮助找出如何在不加载_FILE()的情况下执行此操作,因为它需要更改文件夹和文件权限,而我无法这样做。 请注意,有必要查询相册表,以便将相册表中的主键与图像一起插入,以便显示相册的程序知道要加载哪个图像。 它被称为: 图片表中没有太多内容,但这里

  • 我需要多个嵌套路由 我用的是react-router-dom的v4 我有我的 我需要组件渲染成这样 Home组件包含Page1、Page2和Page3组件共有的标题组件,但不存在于Login和About中。 我的js代码是这样读的 我希望登录组件只显示在 /login当我请求 /page1、 /page2、 /page3时,它们应该分别包含主页组件和该页面的内容。 取而代之的是呈现的登录组件,在该

  • 问题内容: 可以做这样的事情吗? 我正在使用RESTEasy。 问题答案: 是的,您可以这样做,尽管您将必须重命名方法,以使它们的签名不同。 更新: 检查Dieter Cailliau的答案, 可能是您想要的… 您可以在其中检查JSR-311的API及其参考实现,名称为“ jersey”: JSR311 API 泽西岛

  • 问题内容: 有没有办法在单个函数调用上做到这一点? 就像是: 我知道这是一个语法混乱,但是只是为了给我一个我想实现的目标一个思路,一系列路由就很棒了! 有人知道怎么做吗? 问题答案: 我在寻找相同功能时遇到了这个问题。 @Jonathan Ong在上面的评论中提到,不建议将数组用于路径,但已在Express 4中对其进行了明确描述,并且它在Express 3.x中有效。这是尝试的示例: 从对象内部

  • 我不确定为什么“哪个java”和“哪里是java”路径不正确。我试图编辑~/。bash_profile和 /etc/environment但没有帮助。所需的路径是下面的“回显$JAVA_HOME”中看到的,但同样没有反映在“哪个java”中 下面是我在CentOS 6.4中得到的信息: 哪个java /usr/bin/java java-版本 Java版本"1.7.0_45" JAVA(TM)SE