首页 > 解决方案 > Apache Beam 使用哪种协议从云存储中写入和读取文件,是 HTTPS 还是二进制?

问题描述

我想知道 Apache Beam 使用哪种协议来读取和写入云存储。是 HTTPS 还是二进制(Blob)。我试图用谷歌搜索,但没有找到。我知道 gsutil 命令使用 HTTPS 协议。

标签: google-cloud-storagegoogle-cloud-dataflowapache-beamapache-beam-io

解决方案


您正在混合两件事:传输层和数据编码。

  • Google 是否使用 HTTP 传输?是的,适用于所有 API。通常使用 HTTPS 或 gRPC (HTTP/2)。
  • Google 是否使用二进制编码来加快传输速度?如前所述,传输可以是 HTTPS 或 gRPC。HTTPS 通常用于 REST API,并传输 JSON 文本格式。当然,您可以交换二进制格式的文件(例如 GZIP 以压缩和加速传输)。gRPC 是一个二进制协议。您不交换 JSON,而是要交换的数据的二进制表示。因此,文件传输也是二进制模式。

现在,Beam 有什么用?通常,Google 库在后台使用 gRPC,因此编码是二进制的。如果您使用 JSON 执行自己的 REST API 调用,则将使用 HTTP;但文件内容在可以(取决于您的请求接受内容标头)时以二进制形式传输。


编辑 1

对于 BEAM,我查看了源代码。例如,您在这里GoogleCloudStorageImpl创建了对象。

如果您查看这个完整的类名:import com.google.cloud.hadoop.gcsio.GoogleCloudStorageImpl;. 好的,让我们看看hadoop包!!

Javadoc 很明确:使用 JSON API 。为了确认这一点,我查看了源代码,是的,JSON 格式用于 API 通信。

但是,请记住,这是 API 通信,即围绕文件内容的元数据。文件内容应该以二进制格式发送(b64编码的纯文本应该是奇怪的)。


推荐阅读