我安装了apache-druid-0.22.1作为集群(主节点、数据节点和查询节点(,并通过将其添加到common.runtime.properties中的数组druid.extensions.loadList中启用了"druid-googleextensions"。最后,我定义了GOOGLE_APPLICATION_CREDENTIALS(它具有服务帐户json的值,如https://cloud.google.com/docs/authentication/production(作为运行druid服务的用户的环境变量。然而,当我试图从GCR桶中获取数据时,我遇到了以下错误:
错误:无法构造的实例org.apache.druid.data.input.google.GoogleCloudStorageInputSource,问题:无法设置,请参阅以下错误:1(中的错误自定义提供程序java.io.IOException:应用程序默认值凭据不可用。如果在谷歌上运行,它们是可用的应用程序引擎、谷歌计算引擎或谷歌云外壳。否则环境变量GOOGLE_APPLICATION_CREDENTIALS必须为已定义,指向定义凭据的文件。看见https://developers.google.com/accounts/docs/application-default-credentials了解更多信息。在org.apache.druid.common.gcp.GcpModule.getHttpRequestInitializer(GcpModule.java:60((通过模块:com.google.inject.util.modules$OverrideModule->org.apache.druid.common.gcp.GcpModule(org.apache.druid.common.gcp.GcpModule.getHttpRequestInitializer(GcpModule.java:60((通过模块:com.google.inject.util.modules$OverrideModule->org.apache.druid.common.gcp.GcpModule(com.google.api.client.HttpRequestInitializer的参数org.apache.druid.storage.GoogleStorageDruidModule.getGoogleStorage(GoogleStorageDruidModule.java:114(在org.apache.druid.storage.GoogleStorageDruidModule.getGoogleStorage(GoogleStorageDruidModule.java:114((通过模块:com.google.inject.util.modules$OverrideModule->org.apache.druid.storage.GoogleStorageDruidModule(在中查找org.apache.druid.storage.google.GoogleStorage 1错误[来源:(org.eclipse.jjetty.server.HttpInputOverHTTP(;行:1,列:180](通过参考链:org.apache.druid.indexing.overlord.sampler.IndexTaskSamplerSpec[quot;spec"]->org.apache.druid.indexing.common.task.IndexTask$IndexIngestionSpec["ioConfig"]->org.apache.druid.indexing.common.task.IndexTask$IndexIOConfig["inputSource"](关于此事的报道引起了我的注意。但我看不见任何已验证的解决方案。请帮帮我。
我们希望将数据从GCP带到prem Druid。我们不想在GCP中使用集群。所以我们想要解决这个问题。
对于未来的访问者:
如果您通过systemctl
运行Druid,那么您需要在systemctl的服务文件中添加所需的环境,以确保无论用户或环境更改如何,它都始终传递给Druid。
必须定义指向文件路径的GOOGLE_APPLICATION_CREDENTIALS
,而不包含文件内容。
在集群(如Kubernetes(中,通常装载一个包含文件的卷,并使用env-var指向该卷。