记录一下spark sql远程连接hive,进行sql操作的过程。
1、把远程端的hive-site.xml文件放在idea的resources目录下
注意这里要改成远程要访问的ip地址
2、引入mysql驱动包,因为spark sql其实是访问的是存储hive元数据的库,我的是mysql
crt+alt+shift+s打开导包界面,点击“+” > Library > Java 选择mysql驱动包
如果没有mysql驱动包会报这样的错误:
java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient;
3、下载hadoop包,配置本地hadoop环境。
配置hadoop环境变量HADOOP_HOME
Path中添加:%HADOOP_HOME%\sbin;%HADOOP_HOME%\bin
4、下载winutils.exe、hadoop.dll包放在本地hadoop/bin目录下。下面放了链接,自行下载
链接:https://pan.baidu.com/s/1xfszDnX77lDEBR_m5zR5HQ
提取码:r49w
5、远程连接用户要授予远程连接权限
grant all privileges on *.* to hive@'%' identified by "123";
6、编写程序进行测试
import org.apache.spark.sql.SparkSession
object demo_hive{
def main(args: Array[String]): Unit = {
val spark=SparkSession.builder().appName("Spark Hive Test").master("local[4]").config("hive.sql.warehouse.dir","warehouseLocation").enableHiveSupport().getOrCreate()
import spark.implicits._
import spark.sql
spark.sql("select count(1) from stg.test").show()
}
程序运行成功: