本文已参与「新人创作礼」活动,一起开启掘金创作之路。
scala JDBC 方式连接 impala 代码以及pom.xml文件中的依赖
背景
用cala JDBC 方式连接 impala 代码以及pom.xml文件中的依赖,使用的CDH环境
pom.xml依赖
<dependency>
<groupId>com.cloudera</groupId>
<artifactId>ImpalaJDBC41</artifactId>
<version>2.5.42</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-cli</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-metastore</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-common</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libfb303</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
</dependency>
注:pom 文件依赖应该还需要zookeeper但是我在其他pom文件中引用了,所以就没有体现。
代码
import java.sql.{Connection, PreparedStatement, ResultSet}
object ImpalaConnectionJDBC{
def getConnection()={
var conn: Connection = null
var ps: PreparedStatement = null
var rs: ResultSet = null
val JDBC_DRIVER: String = "com.cloudera.impala.jdbc41.Driver"
val CONNECTION_URL: String = "jdbc:impala://x.x.x.x:21050"
import java.sql.{DriverManager, SQLException}
try {
Class.forName(JDBC_DRIVER)
conn = DriverManager.getConnection(CONNECTION_URL)
ps = conn.prepareStatement("select * from cl")
rs = ps.executeQuery
while ( {
rs.next
}) System.out.println(rs.getString(1))
} catch {
case e: Exception =>
e.printStackTrace()
} finally try {
if (rs != null){
rs.close()
}
if (ps != null){
ps.close()
}
if (conn != null){
conn.close()
}
} catch {
case e: SQLException =>
e.printStackTrace()
}
}
def main(args: Array[String]): Unit = {
getConnection()
}
}
关于CDH 因jdk更换导致hue cloudera-scm-server无法正常使用
更换正确的jdk
官网推荐在/usr/java/jdk-
启动cloudera-scm-server 没有任何报错
查看日志sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
没有任何信息。
一天都没搞定,原因就是同时更换了jdk没有告诉我
我只想用hue 也是这个问题导致报错
修改hue的sbin/nologin 改成/bin/bash
vipw /etc/passwd
修改完毕后,保存退出
su hue
/opt/cloudera/parcels/CDH-6.0.1-1.cdh6.0.1.p0.590678/etc/rc.d/init.d/hue start\
/etc/init.d/functions: line 71: /dev/null: Permission denied\
Starting hue: Password: \
su: Authentication failure\
[FAILED]\
提示权限问题修改 /dev/null权限
chmod 666 /dev/null
sudo systemctl start cloudera-scm-server
成功启动 hue也成功启动。