看文档可以知道,Spark SQL复用了hive的sql解析器/metastore管理。而hive的默认的metastore为derby,它有两个弊端:
1.metastore一次仅允许一个客户端连接
2.每个客户端进行sql操作时,都会在本进程所在的文件夹内新建metastore
所以,在产品的开发中,至少应该将metastore配为postgresql的
步骤如下:
1.在postgresql中新建一个用户nsc,并为它新建一个数据库metastore;并允许远程访问
2.新建/home/pijing/spark/conf/hive-site.xml文件,配置如下:
3.我用的spark版本为1.3.0,它所用的hive版本为0.12.0;所以下载一个hive的包,在它的: scripts\metastore\upgrade\postgres目录下,找到hive-schema-0.12.0.postgres.sql
运行命令:
psql –U nsc metastore<c:\hive\scripts\metastore\upgrade\postgres\hive-schema-0.12.0.postgres.sql
将表导入pg的metastore库中。
4.接着,再运行/home/pijing/spark/sbin/start-thriftserver.sh即可
经过以上步骤,metastore就被配置为了postgresql中的metastore数据库。