xiaoyao1991 / presto-ethereum

Presto Ethereum Connector -- SQL on Ethereum
Apache License 2.0
471 stars 56 forks source link

AWS Installation Error #36

Open EmilJimenez21 opened 6 years ago

EmilJimenez21 commented 6 years ago

Greetings,

I'm contacting you today to ask for support in installing presto-ethereum on AWS EMR. I have the plugin installed and configured on the server, I launch the "bin/launcher" and it crashes when I run the presto-cli command.

I get error "failed: Catalog ethereum does not exist", While I have the plugin installed and extracted in the plugins folder and I added the catalog/ethereum.properties file in the root folder.

Thank you in advanced for any help!

EmilJimenez21 commented 6 years ago

I got the catalog to exist... This is the latest problem I'm facing "java.lang.NoClassDefFoundError"

2018-03-21T05:04:16.820Z INFO main com.facebook.presto.metadata.StaticCatalogStore -- Loading catalog /etc/presto/conf/catalog/ethereum.properties -- 2018-03-21T05:04:17.720Z INFO main Bootstrap PROPERTY DEFAULT RUNTIME DESCRIPTION 2018-03-21T05:04:17.720Z INFO main Bootstrap ethereum.ipc null null 2018-03-21T05:04:17.721Z INFO main Bootstrap ethereum.jsonrpc null http://172.31.20.110:25565/ 2018-03-21T05:04:17.721Z INFO main Bootstrap ethereum.infura null null 2018-03-21T05:04:17.721Z INFO main Bootstrap 2018-03-21T05:04:17.721Z WARN main Bootstrap UNUSED PROPERTIES 2018-03-21T05:04:17.721Z WARN main Bootstrap  2018-03-21T05:04:17.721Z WARN main Bootstrap 2018-03-21T05:04:18.339Z ERROR main com.facebook.presto.server.PrestoServer com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: com/facebook/presto/spi/connector/ConnectorSplitManager$SplitSchedulingStrategy com.google.common.util.concurrent.ExecutionError: com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: com/facebook/presto/spi/connector/ConnectorSplitManager$SplitSchedulingStrategy at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2199) at com.google.common.cache.LocalCache.get(LocalCache.java:3934) at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) at com.google.inject.internal.FailableCache.get(FailableCache.java:48) at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:50) at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:136) at com.google.inject.internal.InjectorImpl.initializeBinding(InjectorImpl.java:533) at com.google.inject.internal.AbstractBindingProcessor$Processor$1.run(AbstractBindingProcessor.java:160) at com.google.inject.internal.ProcessedBindingData.initializeBindings(ProcessedBindingData.java:44) at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:123) at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:107) at com.google.inject.Guice.createInjector(Guice.java:96) at io.airlift.bootstrap.Bootstrap.initialize(Bootstrap.java:242) at im.xiaoyao.presto.ethereum.EthereumConnectorFactory.create(EthereumConnectorFactory.java:47) at com.facebook.presto.connector.ConnectorManager.createConnector(ConnectorManager.java:305) at com.facebook.presto.connector.ConnectorManager.addCatalogConnector(ConnectorManager.java:193) at com.facebook.presto.connector.ConnectorManager.createConnection(ConnectorManager.java:185) at com.facebook.presto.connector.ConnectorManager.createConnection(ConnectorManager.java:171) at com.facebook.presto.metadata.StaticCatalogStore.loadCatalog(StaticCatalogStore.java:99) at com.facebook.presto.metadata.StaticCatalogStore.loadCatalogs(StaticCatalogStore.java:77) at com.facebook.presto.server.PrestoServer.run(PrestoServer.java:120) at com.facebook.presto.server.PrestoServer.main(PrestoServer.java:67) Caused by: com.google.common.util.concurrent.ExecutionError: java.lang.NoClassDefFoundError: com/facebook/presto/spi/connector/ConnectorSplitManager$SplitSchedulingStrategy at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2199) at com.google.common.cache.LocalCache.get(LocalCache.java:3934) at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3938) at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4821) at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4827) at com.google.inject.internal.FailableCache.get(FailableCache.java:48) at com.google.inject.internal.MembersInjectorStore.get(MembersInjectorStore.java:68) at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:74) at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:29) at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:37) at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33) at com.google.inject.internal.FailableCache$1.load(FailableCache.java:37) at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ... 23 more Caused by: java.lang.NoClassDefFoundError: com/facebook/presto/spi/connector/ConnectorSplitManager$SplitSchedulingStrategy at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.getDeclaredMethods(Class.java:1975) at com.google.inject.spi.InjectionPoint.getInjectionPoints(InjectionPoint.java:688) at com.google.inject.spi.InjectionPoint.forInstanceMethodsAndFields(InjectionPoint.java:380) at com.google.inject.internal.MembersInjectorStore.createWithListeners(MembersInjectorStore.java:93) at com.google.inject.internal.MembersInjectorStore.access$000(MembersInjectorStore.java:37) at com.google.inject.internal.MembersInjectorStore$1.create(MembersInjectorStore.java:45) at com.google.inject.internal.MembersInjectorStore$1.create(MembersInjectorStore.java:42) at com.google.inject.internal.FailableCache$1.load(FailableCache.java:37) at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3524) at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2317) at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2280) at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2195) ... 38 more Caused by: java.lang.ClassNotFoundException: com.facebook.presto.spi.connector.ConnectorSplitManager$SplitSchedulingStrategy at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at com.facebook.presto.server.PluginClassLoader.loadClass(PluginClassLoader.java:72) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 52 more

xiaoyao1991 commented 6 years ago

@Basketcaisse21 thanks for reporting. What version of presto are you using?

EmilJimenez21 commented 6 years ago

@xiaoyao1991 Thank you for the quick response! I'm running presto 5.12.0

xiaoyao1991 commented 6 years ago

hmm, I see that EMR 5.12.0 is using Presto ver 0.188. The presto-ethereum is now importing presto related dependencies at 0.196. I actually just upgraded dependencies from 0.181 to 0.196 due to #33

xiaoyao1991 commented 6 years ago

looks like presto spi is just not so stable :(

So one solution to this is to have different builds for 0.188(provided that's one latest AWS EMR uses) and latest. What do you think?

EmilJimenez21 commented 6 years ago

@xiaoyao1991 I think that might be a solid solution to this error. I'll keep you posted!

xiaoyao1991 commented 6 years ago

@Basketcaisse21 Thanks. If you can, would you want to work on this and try to provide a neat solution in the pom.xml to provide different build goals? I would appreciate it so much :)