問(wèn)題由來(lái):
進(jìn)行HIveContext使用的時(shí)候,一切都很正常。。。。
hive里有一張dept 的表
記得pom里添加依賴:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
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)創(chuàng)建相應(yīng)的Context
val sparkConf = new SparkConf()
//sparkConf.setAppName("HiveContextApp").setMaster("local[2]")
val sc = new SparkContext(sparkConf)
val hiveContext = new HiveContext(sc)
//2)相關(guān)處理--讀hive里的表,簡(jiǎn)單的show一下
hiveContext.table("dept").show
//3)關(guān)閉資源
sc.stop()
}
}
【打包編譯到生產(chǎn)環(huán)境,提交作業(yè)的時(shí)候問(wèn)題來(lái)了。。。笨笨滴花了好幾個(gè)小時(shí),好在堅(jiān)持一下解決啦】
該啟動(dòng)的你要啟動(dòng)好啦?。。?!
執(zhí)行提交我的腳本
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
報(bào)錯(cuò):Exception in thread "main" org.apache.spark.sql.catalyst.analysis.NoSuchTableException: Table or view 'dept' not found in database 'default';
解決:
把hive的配置文件hive-site.xml 復(fù)制粘貼到編譯過(guò)后的spark中的conf下面,然后在進(jìn)行重新提交,OK~~~就獲取到dept表 的數(shù)據(jù)啦~

image.png
<文末彩蛋>
如果通過(guò)spark-shell訪問(wèn)hive的時(shí)候,查看到表是空的---也是這個(gè)原因