beeline:用戶端,負責與thriftserver連接配接
thriftserver :服務端,負責允許遠端用戶端使用多種程式設計語言如Java、Python向Hive送出請求,取回結果。 使用jdbc協定連接配接hive的thriftserver伺服器。正常的hive僅允許使用HiveQL執行查詢、更新等操作,并且該方式比較笨拙單一。幸好Hive提供了輕用戶端的實作,通過HiveServer或者HiveServer2,用戶端可以在不啟動CLI的情況下對Hive中的資料進行操作。
1.啟動thriftserver 服務,端口10000
./sbin/start-thriftserver.sh \
--hiveconf hive.server2.thrift.port=10000 \
--master local[2] \
--jars /opt/dataTec/spark-2.0.2-bin-hadoop2.6/mysql-connector-java-5.1.6-bin.jar
2.啟動beeline ,beeline 在spark的bin目錄下,端口10000 與上面一緻
./bin/beeline -u jdbc:hive2://slave:10000 -n root -p 123456
在開發調試環境中(本地調試伺服器上的spark-sql),在使用連接配接thriftserver來操作spark-sql表中資料時要提前啟動thriftserver
import java.sql.DriverManager
/**
* Created by hello on 2018-05-24.
*/
object SparkSqlThriftServerAPP {
def main(args: Array[String]) {
Class.forName("org.apache.hive.jdbc.HiveDriver")
val conn = DriverManager.getConnection("jdbc:hive2://192.168.91.127:10000","root","123456")
val pstmt = conn.prepareStatement("select id,provice,num from info")
val rs = pstmt.executeQuery()
while(rs.next()){
println("id->"+rs.getInt("id") +" provice->"+rs.getString("provice")+" num->"+rs.getInt("num") )
}
rs.close()
pstmt.close()
conn.close()
}
}
pom.xml
<dependency>
<groupId>org.spark-project.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.2.1.spark2</version>
</dependency>