解决:问题spark-sumbit的时候报错:Exception in thread "main" org.apache.spark.sql.catalyst.analysis.NoSuchTa...

问题由来:

进行HIveContext使用的时候,一切都很正常。。。。
hive里有一张dept 的表

记得pom里添加依赖:
 
      org.apache.spark
      spark-hive_2.11
      ${spark.version}
 

IDEA

import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import org.apache.spark.sql.hive.HiveContext

object HiveContextApp {
  def main(args: Array[String]): Unit = {

    //1)创建相应的Context
    val sparkConf = new SparkConf()

    //sparkConf.setAppName("HiveContextApp").setMaster("local[2]")

    val sc = new SparkContext(sparkConf)
    val hiveContext = new HiveContext(sc)

    //2)相关处理--读hive里的表,简单的show一下

    hiveContext.table("dept").show

    //3)关闭资源
    sc.stop()

  }

}

【打包编译到生产环境,提交作业的时候问题来了。。。笨笨滴花了好几个小时,好在坚持一下解决啦】
该启动的你要启动好啦!!!!

执行提交我的脚本
spark-submit \
--class com.cbt.spark.HiveContextApp \
--master local[2] \
--jars /home/hadoop/software/mysql-connector-java-5.1.46-bin.jar \
/home/hadoop/lib/sql-1.0.jar 

报错:Exception in thread "main" org.apache.spark.sql.catalyst.analysis.NoSuchTableException: Table or view 'dept' not found in database 'default';

解决:
把hive的配置文件hive-site.xml 复制粘贴到编译过后的spark中的conf下面,然后在进行重新提交,OK~~~就获取到dept表 的数据啦~
image.png

<文末彩蛋>
如果通过spark-shell访问hive的时候,查看到表是空的---也是这个原因

你可能感兴趣的:(解决:问题spark-sumbit的时候报错:Exception in thread "main" org.apache.spark.sql.catalyst.analysis.NoSuchTa...)