drill-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sékine Coulibaly <scoulib...@gmail.com>
Subject Re: odbc connection with unixODBC
Date Wed, 31 Aug 2016 19:57:31 GMT
Should be confirmed but yes, dDrillExplorer most likely makes use of iodbc
only and not unixODBC.

Regarding the unixODBC stuff, my guess is that libodbcinst.so is not in
your LD_LIBRARY_PATH. But you most likely have libodbcinst.so.1.
So, please give it a try changing your .mapr.drillodbc.ini :

#   SimbaDM / unixODBC
ODBCInstLib=libodbcinst.so.1

You should then be able to use isql :

isql "Sample MapR Drill DSN 64"

Result being :

| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SCHEMA_NAME


                                                                          |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| INFORMATION_SCHEMA


                                                                           |
| cp.default


                                                                           |
| dfs.default


                                                                          |
| dfs.root


                                                                           |
| dfs.tmp


                                                                          |
| sys


                                                                          |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
SQLRowCount returns -1
6 rows fetched

To investigate dynamic linking, you can use the following :
strace isql "Sample MapR Drill DSN 64"

This show where the libraries are actually searched at execution time.



2016-08-31 12:50 GMT+02:00 Nicolas Paris <niparisco@gmail.com>:

> Krystal, Sékine, thanks for your help. Pease find more informations :
>
> *$dpkg -s unixodbc*
> Package: unixodbc
> Status: install ok installed
> Priority: optional
> Section: database
> Installed-Size: 111
> Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
> Architecture: amd64
> Multi-Arch: foreign
> Version: 2.2.14p2-5ubuntu5
> Depends: libc6 (>= 2.14), libreadline6 (>= 6.0), odbcinst1debian2 (>=
> 2.2.11-3), libodbc1 (>= 2.2.14p2-3)
> Conflicts: unixodbc-bin (<< 2.2.4-1)
>
> *$locate libodbcinst*
> /usr/lib/x86_64-linux-gnu/libodbcinst.a
> /usr/lib/x86_64-linux-gnu/libodbcinst.so
> /usr/lib/x86_64-linux-gnu/libodbcinst.so.1
> /usr/lib/x86_64-linux-gnu/libodbcinst.so.1.0.0
>
> *$echo $LD_LIBRARY_PATH *
> /usr/local/lib:/usr/lib/:/opt/mapr/drillodbc/lib/64/:/usr/
> lib/x86_64-linux-gnu/
>
> *$head -100 /etc/mapr.drillodbc.ini*
> [Driver]
> DisableAsync=0
> DriverManagerEncoding=UTF-16
> ErrorMessagesPath=/opt/mapr/drillodbc/ErrorMessages
> LogLevel=2
> LogPath=/tmp/drilllog/
> SwapFilePath=/tmp
> #   SimbaDM / unixODBC
> ODBCInstLib=libodbcinst.so
>
> *$sudo ldconfig -v | grep "odbc"*
> /sbin/ldconfig.real: Ne peut évaluer par stat /lib/i686-linux-gnu: Aucun
> fichier ou dossier de ce type
> /sbin/ldconfig.real: Ne peut évaluer par stat /usr/lib/i686-linux-gnu:
> Aucun fichier ou dossier de ce type
> /sbin/ldconfig.real: Chemin « /lib/x86_64-linux-gnu » donné plus d'une fois
> /sbin/ldconfig.real: Chemin « /usr/lib/x86_64-linux-gnu » donné plus d'une
> fois
> /sbin/ldconfig.real: /lib/i386-linux-gnu/ld-2.19.so is the dynamic linker,
> ignoring
>
> /sbin/ldconfig.real: /lib/x86_64-linux-gnu/ld-2.19.so is the dynamic
> linker, ignoring
>
>     libodbccr.so.1 -> libodbccr.so.1.0.0
>     libodbc.so.1 -> libodbc.so.1.0.0
>     libodbcinst.so.1 -> libodbcinst.so.1.0.0
>
> *$/opt/mapr/drillodbc/DrillExplorer/DrillExplorer*
> Java Classpath:
> /opt/mapr/drillodbc/DrillExplorer/app/DrillExplorer.jar:libs/hadoop-
> common-0.23.9.jar:libs/jna.jar:libs/json-20141113.jar:
> resources/Version.txt:resources/images/cftable.ico:
> resources/images/cftable2.png:resources/images/csv.png:
> resources/images/database.ico:resources/images/database.png:
> resources/images/file.ico:resources/images/folder.ico:
> resources/images/json.png:resources/images/parquet.png:
> resources/images/table.ico:resources/images/tsv.png:
> resources/images/view.ico
> Exception in thread "JavaFX Application Thread" java.lang.RuntimeException:
> java.lang.reflect.InvocationTargetException
>     at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1762)
>     at
> javafx.fxml.FXMLLoader$ControllerMethodEventHandler.
> handle(FXMLLoader.java:1645)
>     at
> com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(
> CompositeEventHandler.java:86)
>     at
> com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(
> EventHandlerManager.java:238)
>     at
> com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(
> EventHandlerManager.java:191)
>     at
> com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(
> CompositeEventDispatcher.java:59)
>     at
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(
> BasicEventDispatcher.java:58)
>     at
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(
> EventDispatchChainImpl.java:114)
>     at
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(
> BasicEventDispatcher.java:56)
>     at
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(
> EventDispatchChainImpl.java:114)
>     at
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(
> BasicEventDispatcher.java:56)
>     at
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(
> EventDispatchChainImpl.java:114)
>     at
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(
> BasicEventDispatcher.java:56)
>     at
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(
> EventDispatchChainImpl.java:114)
>     at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
>     at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
>     at javafx.event.Event.fireEvent(Event.java:198)
>     at javafx.scene.Node.fireEvent(Node.java:8216)
>     at javafx.scene.control.Button.fire(Button.java:185)
>     at
> com.sun.javafx.scene.control.behavior.ButtonBehavior.
> mouseReleased(ButtonBehavior.java:182)
>     at
> com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.
> handle(BehaviorSkinBase.java:96)
>     at
> com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.
> handle(BehaviorSkinBase.java:89)
>     at
> com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.
> handleBubblingEvent(CompositeEventHandler.java:218)
>     at
> com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(
> CompositeEventHandler.java:80)
>     at
> com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(
> EventHandlerManager.java:238)
>     at
> com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(
> EventHandlerManager.java:191)
>     at
> com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(
> CompositeEventDispatcher.java:59)
>     at
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(
> BasicEventDispatcher.java:58)
>     at
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(
> EventDispatchChainImpl.java:114)
>     at
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(
> BasicEventDispatcher.java:56)
>     at
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(
> EventDispatchChainImpl.java:114)
>     at
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(
> BasicEventDispatcher.java:56)
>     at
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(
> EventDispatchChainImpl.java:114)
>     at
> com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(
> BasicEventDispatcher.java:56)
>     at
> com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(
> EventDispatchChainImpl.java:114)
>     at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
>     at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
>     at javafx.event.Event.fireEvent(Event.java:198)
>     at javafx.scene.Scene$MouseHandler.process(Scene.java:3724)
>     at javafx.scene.Scene$MouseHandler.access$1500(Scene.java:3452)
>     at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1728)
>     at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2461)
>     at
> com.sun.javafx.tk.quantum.GlassViewEventHandler$
> MouseEventNotification.run(GlassViewEventHandler.java:348)
>     at
> com.sun.javafx.tk.quantum.GlassViewEventHandler$
> MouseEventNotification.run(GlassViewEventHandler.java:273)
>     at java.security.AccessController.doPrivileged(Native Method)
>     at
> com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(
> GlassViewEventHandler.java:382)
>     at com.sun.glass.ui.View.handleMouseEvent(View.java:553)
>     at com.sun.glass.ui.View.notifyMouse(View.java:925)
>     at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
>     at
> com.sun.glass.ui.gtk.GtkApplication.lambda$null$45(
> GtkApplication.java:126)
>     at com.sun.glass.ui.gtk.GtkApplication$$Lambda$43/
> 202720134.run(Unknown
> Source)
>     at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.reflect.InvocationTargetException
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
> 62)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:483)
>     at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
>     at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(
> DelegatingMethodAccessorImpl.java:43)
>     at java.lang.reflect.Method.invoke(Method.java:483)
>     at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
> at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1759)
>     ... 51 more
> *Caused by: java.lang.UnsatisfiedLinkError: Unable to load library
> 'iodbc':
> Native library (linux-x86-64/libiodbc.so)* not found in resource path
> ([file:/opt/mapr/drillodbc/DrillExplorer/app/DrillExplorer.jar,
> file:/opt/mapr/drillodbc/DrillExplorer/app/libs/hadoop-common-0.23.9.jar,
> file:/opt/mapr/drillodbc/DrillExplorer/app/libs/jna.jar,
> file:/opt/mapr/drillodbc/DrillExplorer/app/libs/json-20141113.jar,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/Version.txt,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/images/cftable.ico,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/images/cftable2.png,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/images/csv.png,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/images/database.ico,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/images/database.png,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/images/file.ico,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/images/folder.ico,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/images/json.png,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/images/parquet.png,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/images/table.ico,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/images/tsv.png,
> file:/opt/mapr/drillodbc/DrillExplorer/app/resources/images/view.ico])
>     at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:271)
>     at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:398)
>     at com.sun.jna.Library$Handler.<init>(Library.java:147)
>     at com.sun.jna.Native.loadLibrary(Native.java:414)
>     at com.sun.jna.Native.loadLibrary(Native.java:393)
>     at com.simba.odbc.ODBCConnection$DrillODBC.<clinit>(Unknown Source)
>     at com.simba.odbc.ODBCUtils.getDataSources(Unknown Source)
>     at com.simba.drill.DRConnection.getDataSources(Unknown Source)
>     at
> com.simba.schemaexplorer.ConnectionPaneController.populateDSNList(Unknown
> Source)
>     at com.simba.schemaexplorer.SchemaExplorerController.connect(Unknown
> Source)
>
>
>
> Le mar. 30 août 2016 à 22:58, Sékine Coulibaly <scoulibaly@gmail.com> a
> écrit :
>
> > Nicolas,
> >
> > Additionally to what Krystal pointed at, on Linux platforms you can try
> > this :
> > sudo ldconfig -v | grep "odbc"
> >
> > This will yield a non-empty result if dynamic linker can find the dynamic
> > library related to odbc. If nothing is returned, issuing the following
> > command will help refresh ldconfig's cache :
> > sudo ldconfig
> >
> > Sekine
> >
> > 2016-08-30 19:18 GMT+02:00 Krystal Nguyen <knguyen@maprtech.com>:
> >
> > > Hi Nicolas,
> > >
> > > ODBC should work with unixODBC driver manager.  Does the
> > "libodbcinst.so.1"
> > > library file exists on your node and it's path specified in the
> > > "LD_LIBRARY_PATH" variable.  I am using unixODBC-2.2.14 it is working
> > fine
> > > for me.  I use the following setting in mapr.drillodbc.ini:
> > >
> > > #   SimbaDM / unixODBC
> > > ODBCInstLib=libodbcinst.so
> > >
> > > Thanks,
> > > Krystal
> > >
> > > On Tue, Aug 30, 2016 at 10:07 AM, Nicolas Paris <niparisco@gmail.com>
> > > wrote:
> > >
> > > > Hello,
> > > >
> > > > I am testing ODBC connexion thought Drill Explorer.
> > > > It works ok with iodbc installed.
> > > >
> > > > However I cannot make it working with unixODBC.
> > > > I get this error :
> > > >  Unable to load library 'iodbc': Native library
> > > (linux-x86-64/libiodbc.so)
> > > >
> > > > I have specified in the mapr.drillodbc.ini  to use unixODBC
> > > > ODBCInstLib=libodbcinst.so.1
> > > >
> > > > Does it mean iodbc is the only working client ?
> > > > Or does it mean Drill Explorer only works with iodbc ?
> > > >
> > > > Thanks by advance
> > > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message