Support Questions

Find answers, ask questions, and share your expertise
Announcements
Celebrating as our community reaches 100,000 members! Thank you!

Connect Impala to Metabase

avatar
New Contributor

Hi Experts,

I need to connect my Impala data source to Metabase (existing metabase impala driver) but still got error like this in the log.

 

 

[a75a5199-ad1e-4c89-b92b-2e9b6079df7b] 2024-06-11T19:49:04+07:00 ERROR metabase.api.database Cannot connect to Database,clojure.lang.ExceptionInfo: No method in multimethod 'connection-details->spec' for dispatch value: :impala {:message "No method in multimethod 'connection-details->spec' for dispatch value: :impala"},	at metabase.driver.util$can_connect_with_details_QMARK_.invokeStatic(util.clj:165),	at metabase.driver.util$can_connect_with_details_QMARK_.doInvoke(util.clj:136),	at clojure.lang.RestFn.invoke(RestFn.java:442),	at metabase.api.database$test_database_connection.invokeStatic(database.clj:706),	at metabase.api.database$test_database_connection.doInvoke(database.clj:696),	at clojure.lang.RestFn.invoke(RestFn.java:425),	at metabase.api.database$test_connection_details.invokeStatic(database.clj:760),	at metabase.api.database$test_connection_details.invoke(database.clj:740),	at metabase.api.database$fn__98514.invokeStatic(database.clj:782),	at metabase.api.database$fn__98514.invoke(database.clj:764),	at compojure.core$wrap_response$fn__44649.invoke(core.clj:160),	at compojure.core$wrap_route_middleware$fn__44633.invoke(core.clj:132),	at compojure.core$wrap_route_info$fn__44638.invoke(core.clj:139),	at compojure.core$wrap_route_matches$fn__44642.invoke(core.clj:151),	at clojure.lang.Var.invoke(Var.java:393),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at compojure.core$wrap_route_matches$fn__44642.invoke(core.clj:152),	at clojure.lang.Var.invoke(Var.java:393),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661.invoke(core.clj:200),	at metabase.server.middleware.auth$enforce_authentication$fn__93998.invoke(auth.clj:17),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661.invoke(core.clj:200),	at compojure.core$make_context$handler__44689.invoke(core.clj:290),	at compojure.core$make_context$fn__44693.invoke(core.clj:300),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at compojure.core$make_context$fn__44693.invoke(core.clj:301),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at compojure.core$make_context$fn__44693.invoke(core.clj:301),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at compojure.core$make_context$fn__44693.invoke(core.clj:301),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at compojure.core$make_context$fn__44693.invoke(core.clj:301),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at compojure.core$make_context$fn__44693.invoke(core.clj:301),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at compojure.core$make_context$fn__44693.invoke(core.clj:301),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at compojure.core$make_context$fn__44693.invoke(core.clj:301),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at compojure.core$make_context$fn__44693.invoke(core.clj:301),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at metabase.api.routes$fn__102024$fn__102027.invoke(routes.clj:67),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661.invoke(core.clj:200),	at clojure.lang.AFn.applyToHelper(AFn.java:160),	at clojure.lang.AFn.applyTo(AFn.java:144),	at clojure.core$apply.invokeStatic(core.clj:667),	at clojure.core$apply.invoke(core.clj:662),	at metabase.server.routes$fn__102189$fn__102190.doInvoke(routes.clj:72),	at clojure.lang.RestFn.invoke(RestFn.java:436),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661.invoke(core.clj:200),	at compojure.core$make_context$handler__44689.invoke(core.clj:290),	at compojure.core$make_context$fn__44693.invoke(core.clj:300),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at compojure.core$wrap_route_matches$fn__44642.invoke(core.clj:153),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at compojure.core$wrap_route_matches$fn__44642.invoke(core.clj:153),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at compojure.core$wrap_route_matches$fn__44642.invoke(core.clj:153),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661$f__44662$respond_SINGLEQUOTE___44663.invoke(core.clj:197),	at metabase.server.routes$fn__102174$fn__102176.invoke(routes.clj:49),	at compojure.core$routes$fn__44661$f__44662.invoke(core.clj:198),	at compojure.core$routes$fn__44661.invoke(core.clj:200),	at metabase.server.middleware.exceptions$catch_uncaught_exceptions$fn__98797.invoke(exceptions.clj:108),	at metabase.server.middleware.exceptions$catch_api_exceptions$fn__98794.invoke(exceptions.clj:96),	at metabase.server.middleware.log$log_api_call$fn__102458$fn__102459$fn__102460.invoke(log.clj:216),	at metabase.driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invokeStatic(diagnostic.clj:18),	at metabase.driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invoke(diagnostic.clj:12),	at metabase.server.middleware.log$log_api_call$fn__102458$fn__102459.invoke(log.clj:208),	at toucan2.execute$do_with_call_counts.invokeStatic(execute.clj:112),	at toucan2.execute$do_with_call_counts.invoke(execute.clj:103),	at metabase.server.middleware.log$log_api_call$fn__102458.invoke(log.clj:207),	at metabase.server.middleware.browser_cookie$ensure_browser_id_cookie$fn__104493.invoke(browser_cookie.clj:40),	at metabase.server.middleware.security$add_security_headers$fn__98753.invoke(security.clj:182),	at metabase.server.middleware.json$wrap_json_body$fn__46006.invoke(json.clj:67),	at metabase.server.middleware.offset_paging$handle_paging$fn__84911.invoke(offset_paging.clj:43),	at metabase.server.middleware.json$wrap_streamed_json_response$fn__46024.invoke(json.clj:103),	at ring.middleware.keyword_params$wrap_keyword_params$fn__104760.invoke(keyword_params.clj:55),	at ring.middleware.params$wrap_params$fn__104779.invoke(params.clj:77),	at metabase.server.middleware.misc$maybe_set_site_url$fn__67232.invoke(misc.clj:61),	at metabase.server.middleware.session$reset_session_timeout$fn__72655.invoke(session.clj:543),	at metabase.server.middleware.session$bind_current_user$fn__72621$fn__72622.invoke(session.clj:438),	at metabase.server.middleware.session$do_with_current_user.invokeStatic(session.clj:417),	at metabase.server.middleware.session$do_with_current_user.invoke(session.clj:401),	at metabase.server.middleware.session$bind_current_user$fn__72621.invoke(session.clj:437),	at metabase.server.middleware.session$wrap_current_user_info$fn__72604.invoke(session.clj:376),	at metabase.server.middleware.session$wrap_session_id$fn__72576.invoke(session.clj:255),	at metabase.server.middleware.auth$wrap_static_api_key$fn__94006.invoke(auth.clj:30),	at ring.middleware.cookies$wrap_cookies$fn__104680.invoke(cookies.clj:194),	at metabase.server.middleware.misc$add_content_type$fn__67214.invoke(misc.clj:29),	at metabase.server.middleware.misc$disable_streaming_buffering$fn__67240.invoke(misc.clj:78),	at ring.middleware.gzip$wrap_gzip$fn__104722.invoke(gzip.clj:86),	at metabase.server.middleware.misc$bind_request$fn__67243.invoke(misc.clj:95),	at metabase.server.middleware.ssl$redirect_to_https_middleware$fn__104509.invoke(ssl.clj:41),	at metabase.server$async_proxy_handler$fn__67654.invoke(server.clj:78),	at metabase.server.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source),	at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:173),	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122),	at org.eclipse.jetty.server.Server.handle(Server.java:563),	at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598),	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753),	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501),	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287),	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314),	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100),	at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53),	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969),	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194),	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149),	at java.base/java.lang.Thread.run(Thread.java:834),Caused by: java.lang.IllegalArgumentException: No method in multimethod 'connection-details->spec' for dispatch value: :impala,	at clojure.lang.MultiFn.getFn(MultiFn.java:156),	at clojure.lang.MultiFn.invoke(MultiFn.java:233),	at metabase.driver.sql_jdbc.connection$do_with_connection_spec_for_testing_connection$fn__51078.invoke(connection.clj:310),	at metabase.util.ssh$do_with_ssh_tunnel.invokeStatic(ssh.clj:165),	at metabase.util.ssh$do_with_ssh_tunnel.invoke(ssh.clj:154),	at metabase.driver.sql_jdbc.connection$do_with_connection_spec_for_testing_connection.invokeStatic(connection.clj:309),	at metabase.driver.sql_jdbc.connection$do_with_connection_spec_for_testing_connection.invoke(connection.clj:305),	at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invokeStatic(connection.clj:334),	at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invoke(connection.clj:330),	at metabase.driver.sql_jdbc$fn__106731.invokeStatic(sql_jdbc.clj:49),	at metabase.driver.sql_jdbc$fn__106731.invoke(sql_jdbc.clj:47),	at clojure.lang.MultiFn.invoke(MultiFn.java:234),	at metabase.driver.util$can_connect_with_details_QMARK_$fn__60006.invoke(util.clj:148),	at clojure.core$binding_conveyor_fn$fn__5823.invoke(core.clj:2047),	at clojure.lang.AFn.call(AFn.java:18),	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264),	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128),	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628),	... 1 more
[a75a5199-ad1e-4c89-b92b-2e9b6079df7b] 2024-06-11T19:49:04+07:00 ERROR metabase.driver.util Failed to connect to Database,java.lang.IllegalArgumentException: No method in multimethod 'connection-details->spec' for dispatch value: :impala,	at clojure.lang.MultiFn.getFn(MultiFn.java:156),	at clojure.lang.MultiFn.invoke(MultiFn.java:233),	at metabase.driver.sql_jdbc.connection$do_with_connection_spec_for_testing_connection$fn__51078.invoke(connection.clj:310),	at metabase.util.ssh$do_with_ssh_tunnel.invokeStatic(ssh.clj:165),	at metabase.util.ssh$do_with_ssh_tunnel.invoke(ssh.clj:154),	at metabase.driver.sql_jdbc.connection$do_with_connection_spec_for_testing_connection.invokeStatic(connection.clj:309),	at metabase.driver.sql_jdbc.connection$do_with_connection_spec_for_testing_connection.invoke(connection.clj:305),	at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invokeStatic(connection.clj:334),	at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invoke(connection.clj:330),	at metabase.driver.sql_jdbc$fn__106731.invokeStatic(sql_jdbc.clj:49),	at metabase.driver.sql_jdbc$fn__106731.invoke(sql_jdbc.clj:47),	at clojure.lang.MultiFn.invoke(MultiFn.java:234),	at metabase.driver.util$can_connect_with_details_QMARK_$fn__60006.invoke(util.clj:148),	at clojure.core$binding_conveyor_fn$fn__5823.invoke(core.clj:2047),	at clojure.lang.AFn.call(AFn.java:18),	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264),	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128),	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628),	at java.base/java.lang.Thread.run(Thread.java:834)
[a75a5199-ad1e-4c89-b92b-2e9b6079df7b] 2024-06-11T19:49:04+07:00 DEBUG metabase.server.middleware.log POST /api/database 400 10.3 ms (0 DB calls) 
{:message "No method in multimethod 'connection-details->spec' for dispatch value: :impala"}

 

 

I already setting the kerberos and can connect to impala through ODBC, maybe what impala JDBC driver should I use?

1 REPLY 1

avatar

@RobertusAgung  I am not familiar with metabase specifically, but i would start with the most modern cloudera jdbc driver:

 

https://www.cloudera.com/downloads/connectors/impala/jdbc/2-6-15.html