Blog.YHT.Web.ID

Icon

Bosan adalah awal dari penciptaan perubahan.

Impala ODBC

Karena setiap hari mengakses data di Impala dan melakukan export hasil pengolahan menjadi text delimited dan mengubahnya menjadi format spreadsheet excel merupakan rutinitas, maka saya mulai mencari celah untuk mempermudah rute yang selalu saja saya jalani ini tiap hari. Hal pertama adalah mencari konektor yang bisa langsung terhubung dengan Impala. Dan saya menemukan halaman unduhan dari situs resmi Cloudera.

Karena menggunakan Debian 8.x (jessie) 64bit, maka saya mengunduh untuk paket Debian yang ada di sana. Saya mengunduh paket untuk Debian 7 64-bit. Dari banyak referensi instalasi yang beredar semua bisa digunakan, namun ada beberapa hal yang menjadi alasan saya mengapa saya harus mencatat konfigurasi pada mesin saya. Koneksi tidak serta merta dapat dilakukan karena pustaka ODBC tidak otomatis di load.

Instalasi Driver

Pertama kita cek apakah unixodbc telah terpasang.

root@debian64:/home/yht/Downloads# apt-get install unixodbc
Reading package lists… Done
Building dependency tree
Reading state information… Done
unixodbc is already the newest version.
unixodbc set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

Bagus, ternyata telah terpasang. Lalu dilanjutkan memasang paket driver yang telah diunduh dari Cloudera.

root@debian64:/home/yht/Downloads# dpkg -i clouderaimpalaodbc_2.5.30.1011-2_amd64.deb
Selecting previously unselected package clouderaimpalaodbc.
(Sedang membaca basis data … 278099 berkas atau direktori telah terpasang.)
Preparing to unpack clouderaimpalaodbc_2.5.30.1011-2_amd64.deb …
Unpacking clouderaimpalaodbc (2.5.30.1011-2) …
dpkg: dependency problems prevent configuration of clouderaimpalaodbc:
clouderaimpalaodbc bergantung pada libsasl2-modules-gssapi-mit (>= 2.1.2); tetapi:
Paket libsasl2-modules-gssapi-mit tidak terpasang.

dpkg: error processing package clouderaimpalaodbc (–install):
ada masalah ketergantungan – biarkan tidak dikonfigurasi
Ada kesalahan saat memproses:
clouderaimpalaodbc

Dari peringatan tersebut dilaporkan bahwa di sistem lokal tidak ada paket yang dibutuhkan (libsasl2-modules-gssapi-mit). Maka kita lanjutkan dengan memasang paket tersebut.

root@debian64:/home/yht/Downloads# apt-get install libsasl2-modules-gssapi-mit
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following NEW packages will be installed:
libsasl2-modules-gssapi-mit
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
1 not fully installed or removed.
Need to get 90,1 kB of archives.
After this operation, 167 kB of additional disk space will be used.
Err http://security.debian.org/ jessie/updates/main libsasl2-modules-gssapi-mit amd64 2.1.26.dfsg1-13+deb8u1
403 Forbidden
Get:1 http://kartolo.sby.datautama.net.id/debian-security/ jessie/updates/main libsasl2-modules-gssapi-mit amd64 2.1.26.dfsg1-13+deb8u1 [90,1 kB]
Fetched 90,1 kB in 1s (70,2 kB/s)
Selecting previously unselected package libsasl2-modules-gssapi-mit:amd64.
(Sedang membaca basis data … 278124 berkas atau direktori telah terpasang.)
Preparing to unpack …/libsasl2-modules-gssapi-mit_2.1.26.dfsg1-13+deb8u1_amd64.deb …
Unpacking libsasl2-modules-gssapi-mit:amd64 (2.1.26.dfsg1-13+deb8u1) …
Sedang menata libsasl2-modules-gssapi-mit:amd64 (2.1.26.dfsg1-13+deb8u1) …
Sedang menata clouderaimpalaodbc (2.5.30.1011-2) …

Konfigurasi

Lalu kita pasang konfigurasi .odbc.ini. Berkas konfigurasi ini saya pasang di folder $HOME milik sendiri.

[ODBC]

[ODBC Data Sources]
Impala_Default=Cloudera Impala ODBC Driver 64-bit

[Impala_Default]
Description=Cloudera ODBC Driver for Impala (64-bit) DSN
Driver=/opt/cloudera/impalaodbc/lib/64/libclouderaimpalaodbc64.so
DriverUnicodeEncoding=2
HOST=hadoop.kalamangga.net
PORT=21050
Database=default
AuthMech=0
UseSASL=0
KrbFQDN=
KrbRealm=
KrbServiceName=
UID=
PWD=
SSL=0
CAIssuedCertNamesMismatch=1
TrustedCerts=/opt/cloudera/impalaodbc/lib/64/cacerts.pem
TSaslTransportBufSize=1000
RowsFetchedPerBlock=10000
SocketTimeout=0
StringColumnLength=32767
UseNativeQuery=0

Jangan tanya masalah keamanan. Saat ini belum dibutuhkan mengingat dalam tahap riset.

Percobaan

Setelah selesai, mari kita coba.

yht@debian64:~$ odbcinst -j
unixODBC 2.3.1
DRIVERS…………: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/yht/.odbc.ini
SQLULEN Size…….: 8
SQLLEN Size……..: 8
SQLSETPOSIROW Size.: 8
yht@debian64:~$ odbcinst -q -d
odbcinst: SQLGetPrivateProfileString failed with .
yht@debian64:~$ odbcinst -q -s
[ODBC]
[Impala_Default]

Yak, konfigurasi telah terpasang dengan baik. Mari kita coba melakukan koneksi.

yht@debian64:~$ isql Impala_Default
[ISQL]ERROR: Could not SQLConnect

Dan di sinilah masalah yang membuat saya menulis catatan ini berasal. Ternyata, pustaka ODBC tidak otomatis dimuat pada saat sistem berjalan.

Penyelesaian Masalah ODBC

Pertama pustaka ODBC harus dimuat. Saya membuat berkas tersendiri yang saya beri nama run1st.sh. Berikut isinya.

export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libodbcinst.so
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu/odbc
export ODBCINI=$HOME/.odbc.ini
export ODBCSYSINI=/etc
export CLOUDERAIMPALAINI=/opt/cloudera/impalaodbc/lib/64/cloudera.impalaodbc.ini

Lalu apakah sudah begitu saja? Mari kita coba lagi.

yht@debian64:~$ . ./run1st.sh
yht@debian64:~$ isql Impala_Default
+—————————————+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+—————————————+

Done! Ternyata bisa.

Semoga catatan ini bisa membantu. Terima kasih. Enjoy your big data exploration!

Kategori: /artikel

Tag: , , , , , , , , ,

Leave a Reply