Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BigQuery connector: java.lang.NoClassDefFoundError: com/google/auth/oauth2/QuotaProjectIdProvider when starting presto #16093

Open
ItayGabbay opened this issue May 13, 2021 · 5 comments

Comments

@ItayGabbay
Copy link

ItayGabbay commented May 13, 2021

version: 0.251.1/0.252

When trying to add a bigquery catalog, and use the "credentials-key" with a base64 string representing the service account json, I get the following error when trying to start presto:

ERROR	main	com.facebook.presto.server.PrestoServer	com.google.inject.CreationException: Unable to create injector, see the following errors:

1) Error in custom provider, java.lang.NoClassDefFoundError: com/google/auth/oauth2/QuotaProjectIdProvider
  at com.facebook.presto.plugin.bigquery.BigQueryConnectorModule.provideBigQueryClient(BigQueryConnectorModule.java:72)
  while locating com.facebook.presto.plugin.bigquery.BigQueryClient
Caused by: java.lang.NoClassDefFoundError: com/google/auth/oauth2/QuotaProjectIdProvider
	at com.google.cloud.ServiceOptions$Builder.setCredentials(ServiceOptions.java:220)
	at java.base/java.util.Optional.ifPresent(Optional.java:183)
	at com.facebook.presto.plugin.bigquery.BigQueryConnectorModule.provideBigQueryClient(BigQueryConnectorModule.java:77)
	at com.facebook.presto.plugin.bigquery.BigQueryConnectorModule$$FastClassByGuice$$3b5d3fde.invoke(<generated>)
	at com.google.inject.internal.ProviderMethod$FastClassProviderMethod.doProvision(ProviderMethod.java:264)
	at com.google.inject.internal.ProviderMethod.doProvision(ProviderMethod.java:173)
	at com.google.inject.internal.InternalProviderInstanceBindingImpl$CyclicFactory.provision(InternalProviderInstanceBindingImpl.java:185)
	at com.google.inject.internal.InternalProviderInstanceBindingImpl$CyclicFactory.access$300(InternalProviderInstanceBindingImpl.java:139)
	at com.google.inject.internal.InternalProviderInstanceBindingImpl$CyclicFactory$1.call(InternalProviderInstanceBindingImpl.java:169)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:112)
	at com.facebook.airlift.bootstrap.LifeCycleModule.provision(LifeCycleModule.java:54)
	at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:120)
	at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:66)
	at com.google.inject.internal.InternalProviderInstanceBindingImpl$CyclicFactory.get(InternalProviderInstanceBindingImpl.java:164)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:168)
	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:39)
	at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:211)
	at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:182)
	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109)
	at com.google.inject.Guice.createInjector(Guice.java:87)
	at com.facebook.airlift.bootstrap.Bootstrap.initialize(Bootstrap.java:251)
	at com.facebook.presto.plugin.bigquery.BigQueryConnectorFactory.create(BigQueryConnectorFactory.java:63)
	at com.facebook.presto.connector.ConnectorManager.createConnector(ConnectorManager.java:379)
	at com.facebook.presto.connector.ConnectorManager.addCatalogConnector(ConnectorManager.java:231)
	at com.facebook.presto.connector.ConnectorManager.createConnection(ConnectorManager.java:223)
	at com.facebook.presto.connector.ConnectorManager.createConnection(ConnectorManager.java:209)
	at com.facebook.presto.metadata.StaticCatalogStore.loadCatalog(StaticCatalogStore.java:123)
	at com.facebook.presto.metadata.StaticCatalogStore.loadCatalog(StaticCatalogStore.java:98)
	at com.facebook.presto.metadata.StaticCatalogStore.loadCatalogs(StaticCatalogStore.java:80)
	at com.facebook.presto.metadata.StaticCatalogStore.loadCatalogs(StaticCatalogStore.java:68)
	at com.facebook.presto.server.PrestoServer.run(PrestoServer.java:138)
	at com.facebook.presto.server.PrestoServer.main(PrestoServer.java:79)
Caused by: java.lang.ClassNotFoundException: com.google.auth.oauth2.QuotaProjectIdProvider
	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
	at com.facebook.presto.server.PluginClassLoader.loadClass(PluginClassLoader.java:80)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 33 more

@javrod87
Copy link

If you have not required to use presto you can use trino. It's like presto but it works more. I had some similar issues with big query connector and this is what we use now. Good luck.

https://trino.io/docs/current/connector/bigquery.html

@ItayGabbay
Copy link
Author

Thanks.
I'm using presto because we use many mathematical functions that do not exist on trino, so unfortunately we can't use trino. That's why I got really excited when the bigquery connector was released, any help for getting it to work will be much appreciated!

@javrod87
Copy link

If you need just math functions Trino guys are fast for making changes if you ask. Which functions are missing that don't exist?

@rohanpednekar
Copy link
Contributor

Hi @davidrabinowitz do you think you can help here? Thanks!

@davidrabinowitz
Copy link
Contributor

It's in the google-auth-library-oauth2-http jar, but it seems you are using a very old version. I'd suggest to upgrade the google cloud libraries-bom to the latest version (20.5.0)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants