描述
Impala 支持哪些语言?尤其是对于C C++的支持
对JDBC ODBC的支持如何?
是否有适用C C++调用的接口?
如果有条件,实际check下
解决
Impala底层由C++编写的,LLVM同一编译运行。
从形式上来说,Java前段,C++处理后端。(通常会说impala是C++实现的所以性能更好,但它的SQL解析部分的确是JAVA实现的)
支持两种语言实现的UDF(用户自定义函数):java和C++;UDAF(用户自定义聚合函数)只能支持C++实现。
Impala支持标准的JDBC接口,允许商业智能工具和用Java或者其他语言写成的客户端软件接入。
端口:21050
驱动:
- HiveJDBC驱动
- 驱动类名:
org.apache.hive.jdbc.HiveDriver
- connection string:
无Kerberos验证:jdbc:hive2://host:port/;auth=noSasl
有Kerberos验证:jdbc:hive2://host:port/;principal=principal_name
LDAP验证:jdbc:hive2://host:port/db_name;user=ldap_userid;password=ldap_password
- 添加jar包到CLASSPATH
/*所需JAR包*/
commons-logging-X.X.X.jar
hadoop-common.jar
hive-common-X.XX.X-cdhX.X.X.jar
hive-jdbc-X.XX.X-cdhX.X.X.jar
hive-metastore-X.XX.X-cdhX.X.X.jar
hive-service-X.XX.X-cdhX.X.X.jar
httpclient-X.X.X.jar
httpcore-X.X.X.jar
libfb303-X.X.X.jar
libthrift-X.X.X.jar
log4j-X.X.XX.jar
slf4j-api-X.X.X.jar
slf4j-logXjXX-X.X.X.jar
存放路径(可自定义):/opt/jars/.
在CLASSPATH配置中添加:export CLASSPATH=/opt/jar/*.jar:$CLASSPATH
- ClouderaJDBC驱动
- 驱动类名:
com.cloudera.impala.jdbc41.Driver
- connection string:
jdbc:impala://Host:Port[/Schema];Property1=Value;Property2=Value;
以上内容来自cloudera官网文档:Configuring Impala to Work with JDBC,点击链接查看更多细节。
第三方产品可以通过ODBC与impala结合使用。
端口:
- 21050:Cloudera ODBC Connector 2.5 和 2.0 版本使用HiveServer2协议,对应impala端口21050
- 21000:Cloudera ODBC Connector 1.x 版本使用HiveServer1协议,对应impala端口21000
驱动:官网上为不同的产品提供了各种驱动,在选择驱动时推荐用户选择 2.x 版本
以上内容来自cloudera官网文档:Configuring Impala to Work with ODBC,点击链接查看更多细节。
impala可以通过ODBC调用C/C++程序
impala ODBC安装步骤
- 安装unixODBC
yum install unixODBC yum install unixODBC-devel
- 安装impala ODBC驱动
- 下载对应版本的驱动并安装
- 修改驱动的环境变量
/etc/profile
添加export LD_LIBRARY_PATH=/usr/local/lib:/opt/cloudera/impalaodbc/lib/64
source /etc/profile
使其生效
拷贝:cloudera.impalaodbc.ini
到/etc/
目录:
修改:/etc/cloudera.impalaodbc.ini 中的如下条目:
# Generic ODBCInstLib
# iODBC
# ODBCInstLib=libiodbcinst.so
# SimbaDM / unixODBC
ODBCInstLib=libodbcinst.so
- 修改/etc/odbc.ini 文件
指定驱动、HOST ip、端口等参数 - 验证是否安装成功
isql -v impalaodbc
安装成功会显示如下内容:
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
这样配置后,C/C++程序就可以通过unixODBC访问Impala中的数据了。