当前位置: 首页 > 面试题库 >

在Apache Beam中从GCS读取文件

鲁旭
2023-03-14
问题内容

我需要从GCS存储桶中读取文件。我知道我必须使用GCS API /客户端库,但找不到任何与之相关的示例。

我一直在GCS文档中参考此链接: GCS客户端库。但是不能真正地削弱。如果有人可以提供一个真正有帮助的例子。谢谢。


问题答案:

好。如果您只是想从GCS中读取文件,而不是从PCollection中读取文件,而是从常规文件中读取文件,并且在使用GCS
Java客户端库时遇到问题,还可以使用Apache Beam
FileSystems
API:


首先,你需要确保你在你的Maven的依赖pom.xmlbeam-sdks-java-extensions-google-cloud- platform-core它包含执行的gs://文件系统:

<dependency>
  <groupId>org.apache.beam</groupId>
  <artifactId>beam-sdks-java-extensions-google-cloud-platform-core</artifactId>
</dependency>

然后设置FileSystems API(默认情况下,在所有管道中都设置了该API,但是如果您在管道外部使用它,则需要手动进行操作)。

PipelineOptions options = PipelineOptionsFactory.create();
// ...Optionally fill in options such as GCP credentials...
// (see GcpOptions class)
FileSystems.setDefaultPipelineOptions(options);

然后,您可以使用它:

ReadableByteChannel chan = FileSystems.open(FileSystems.matchNewResource(
  "gs://path/to/your/file", false /* is_directory */));
try (InputStream stream = Channels.newInputStream(chan)) {
  // Use regular Java utilities to work with the input stream.
}


 类似资料:
  • 我正在google-app-Engine上运行一个应用程序。 尝试从google-cloud d-store上的pdf-file获取txt。 当我在本地运行代码时,它会成功,但当在appengine上运行时,它会在org上失败。pdfbox。例外情况。包装异常 这是我的代码: 代码在with-没有添加其他消息:( 从存储器下载—实际上成功了。如果我记录数据,我会得到如下结果: 现在有没有办法克服这

  • 问题内容: 只是因为一个简单,易于表达的陈述使我的脸上有些错误,所以我有点头疼。 我有一个名为strings.json的json文件,如下所示: 我现在想读取json文件。我发现了以下这些语句,但是不起作用: 控制台上显示的错误是这样的: 已编辑 从更改为 并得到了这个: 问题答案: 该方法(“ load”中没有“ s”)可以直接读取文件: 您正在使用方法,该方法仅用于 字符串 参数。 编辑:新消

  • 我有一个名为Strings.json的json文件,如下所示: 我想读取json文件,现在仅此而已。我发现了这些说法,但它不起作用: 控制台上显示的错误是: 已编辑 从更改为 得到了这个:

  • 一个看起来简单、容易的陈述却让我犯了一些错误。 我有一个名为strings.json的JSON文件,如下所示: 我想阅读JSON文件,目前仅此而已。我发现了这些语句,但它不起作用: 控制台上显示的错误如下: 如果我使用<code>json。加载而不是<code>json。加载,我得到以下错误:

  • 问题内容: 我现在有点傻。我一直在阅读大量文档问题,但我做对了。 我在Google Cloud Storage上有一个文件。它在存储桶“ test_bucket”中。在此存储桶中,有一个文件夹“ temp_files_folder”,其中包含两个文件,一个名为“ test.txt”的.txt文件和一个名为“ test.csv”的.csv文件。这两个文件只是因为我尝试同时使用这两个文件,但是两种方法

  • 问题内容: 我有一个CSV文件,下面是其外观示例: 我知道如何读取文件并打印每列(例如- )。但是我真正想做的是读取行,就像这样,然后依此类推。 然后,我想将这些数字存储到变量中,以便稍后将它们总计(例如): 。那我可以做。 我将如何在Python 3中做到这一点? 问题答案: 您可以执行以下操作: 要么 : 编辑: