? ? ? ? 使用spark操作hive,使用metastore連接hive,獲取hive的數據庫時,當我們在spark中創建數據庫的時候,創建成功。
????????同時hive中也可以看到這個數據庫,建表插入數據也沒有問題,但是當我們去查詢數據庫中的數據時,發現查不到數據,去查hive的元數據,發現,spark在創建數據庫的時候將數據庫創建在了本地文件系統中
????????而我們的hive數據是存放在hdfs上的,我們的spark進行查詢數據時是使用hive的metastore連接的hive的數據庫,也就是spark會從hdfs上讀取數據,所以無論怎么查詢都是查不出來數據的
????????當我們按照這個路徑去我們本地文件系統中查找這個路徑的時候,就可以看到
這個數據庫,如果沒有,可能是spark創建在了其他的服務器節點上?。
如何解決這個問題呢?
????????只需要在spark的配置文件中指定spark的數據存儲位置為hdfs上即可
????????在spark的conf目錄下找到spark-defaults.conf文件,在文件中添加
????????spark.sql.warehouse.dir hdfs的路徑(hive的路徑)
還有另一種方法(慎用)
????????在創建數據庫的時候,在后面加上:localtion hdfs路徑/數據庫名.db
????????該方法雖然也可以將spark創建的數據庫放入到hdfs上,但是在創建的時候,它會清空該文件夾下的所有數據,所以若使用此方法創建,需要設置為一個空文件夾