在spark-shell上运行sql语句,报错
WARN metastore.ObjectStore: Failed to get database default, returning NoSuchObjectException
刚开始在自己的IDEA上都可以编译成功sql部分的代码, 没想到在client上翻了车。 google了好一会才发现是因为spark上conf里面缺少hive配置文件。
很简单,找到hive里conf的下hive-site.xml文件 拷贝到spark的conf目录下
cp hive/conf/hive-site.xml spark/conf/hive-site.xml
ok, 这个问题就解决了!
如果很不幸, 你又遇到下面的报错
Caused by: java.lang.reflect.InvocationTargetException: org.datanucleus.exceptions.NucleusException: Attempt toinvoke the "BONECP" plugin to create a ConnectionPool gave an error : The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH. Please check your CLASSPATH specification, and the name of the driver.
这个地方是因为jdbc的driver连接不上, 需要依赖mysql-connector的jar包。 mysql-connector的jar包在hive的lib目录下, 然后拷贝到spark的jar目录下
cp hive/lib/mysql-connector-java-5.1.44-bin.jar spark/jars/mysql-connector-java-5.1.44-bin.jar
ok, 这样基本上问题就解决了, 重启spark-shell, 就可以运行你的sql命令了
这里感谢大佬的帮助
https://www.cnblogs.com/bigband/p/13558399.html
|