google-cloud-storage - Apache Beam 使用哪种协议从云存储中写入和读取文件,是 HTTPS 还是二进制?
问题描述
我想知道 Apache Beam 使用哪种协议来读取和写入云存储。是 HTTPS 还是二进制(Blob)。我试图用谷歌搜索,但没有找到。我知道 gsutil 命令使用 HTTPS 协议。
解决方案
您正在混合两件事:传输层和数据编码。
- 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编码的纯文本应该是奇怪的)。
推荐阅读
- python - Arima 模型错误 Passing PeriodDtype data is invalid
- c# - 从逻辑应用程序到功能并发送到 Fortnox api 的数据
- docker - Azure Pipelines 中的 Docker 微服务 monorepo CI/CD
- c++ - 错误:从'转换
' 为非标量类型 - javascript - chrome.scripting.executeScript MV3 | 如何从回调范围设置本地范围属性值
- javascript - 为什么我会收到 Uncaught SyntaxError: Invalid left-hand side in assignment at HTMLButtonElement.?
- sorting - 按行长和字母顺序对字符串数组进行排序
- c# - 将逗号分隔的数字转换为非逗号分隔的小数
- visual-studio - 当我从“调试”切换到“发布”配置时,找不到#include 文件
- python - 重新排列二维列表