解决sparksql创建出来的数据库路径错误的问题
首先启动 sparksql 的远程服务:start-thriftserver 服务
启动成功,datagrip 连接正常:
在控制台,创建数据库:
hive 的元数据库中,abc 这个数据库的地址错误:
解决方案:在hive 下修改hive-site.xml
<property><name>hive.metastore.schema.verification</name><value>false</value>
</property>
将hive-site.xml 复制到 spark的conf 下
cp /opt/installs/hive/conf/hive-site.xml /opt/installs/spark/conf
修改spark下的hive-site.xml
<property><name>hive.server2.thrift.port</name><value>10001</value><description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.</description></property>
接着分发一下:
xsync.sh /opt/installs/spark/conf/hive-site.xml
重启thrift服务:
/opt/installs/spark/sbin/stop-thriftserver.sh/opt/installs/spark/sbin/start-thriftserver.sh --hiveconf hive.server2.thrift.port=10001 --hiveconf hive.server2.thrift.bind.host=bigdata01 --master yarn --conf spark.sql.shuffle.partitions=2
使用datagrip 重新连接一下,记得刷新一下连接。
测试一下:
至此,成功!
接着我们编写一个 spark 远程服务启停脚本:
在/usr/local/bin 下创建一个脚本:spark-service-manager.sh
#!/bin/bash# 使用方式: spark-server-manager.sh [start|stop|]
help_info() {echo "参数异常,请重新输入"exit -1
}# 获取操作命令
op=$1# 检查参数是否正确
if [ ! $op ]; thenhelp_info
elif [ $op != "start" -a $op != "stop" ]; thenhelp_info
fi# 开启服务
start_thrift() {/opt/installs/spark/sbin/start-thriftserver.sh \--hiveconf hive.server2.thrift.port=10001 \--hiveconf hive.server2.thrift.bind.host=bigdata01 \--master yarn \--conf spark.sql.shuffle.partitions=2
}
# 停止服务
stop_thrift() {sh /opt/installs/spark/sbin/stop-thriftserver.sh
}# 控制操作
${op}_thrift
chmod 777 spark-service-manager.sh
spark-service-manager.sh start
spark-service-manager.sh stop