1. 程式人生 > >【大資料】Hive作者肯定進修過藍翔挖掘機

【大資料】Hive作者肯定進修過藍翔挖掘機

正經標題應該是:解決hive初始化mysql資料庫錯誤的一種方式

 

Hive安裝包下載地址:

https://mirrors.tuna.tsinghua.edu.cn/apache/hive/

 

事情原因是這樣的,我按照書上的步驟一步一步走,到了該用hive初始化MySQL資料庫這一步了,滿懷期待的敲上命令:

cd ~/hive/bin

./schematool -initSchema -dbType mysql

結果報錯了,什麼什麼<EOF>,整的我是一臉茫然。然後就是百度各種CSDN,部落格園的帖子,都沒說到點上,所以我才寫下這篇文章,以示眾人。

Error: Syntax error: Encountered "<EOF>" at line 1, column 64. (state=42X01,code=30000)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
Underlying cause: java.io.IOException : Schema script failed, errorcode 2
Use --verbose for detailed stacktrace.
*** schemaTool failed ***

我在嘗試./schematool -initSchema -dbType mysql 失敗後,查到了hive預設的資料庫是derby,所以我就修改了一下命令為./schematool -initSchema -dbType derby  ,氣人的是竟然初始化成功了。

可我明明已經在hive-site.xml中配置為mysql資料庫了呀,怎麼hive還是用的derby?於是我打開了hive-default.xml.template檔案看了一下,如下圖所示:

我就是按他的警告來的呀,就是自己建立了一個hive-site.xml來的呀,怎麼就初始化資料庫的時候出錯了呢?

於是我在default檔案裡面搜尋了一下,注意,接下來要講一個知識點,拿出來你的小本本記一下:

使用vi進行字串查詢的步驟:

  1. 按ESC鍵進入命令模式  
  2. 使用一個斜槓 / 作為前導,後面緊跟要查詢的字串  
  3. 按回車鍵  
  4. 按大寫N往上查詢,按小寫n往下查詢

比如我要在vi中查詢connectionURL這個詞

按下回車後發現下圖所示,直覺告訴我這深紅的顏色代表錯誤。

翻譯一下,果然是找不到connectionURL,我才第一次使用這個命令,就找不到目標,我都開始懷疑這個斜槓後面加字串是否能夠用來查找了,然後我隨便試了試斜槓後面加一個字母a,發現確實是能找到a的,說明這個命令沒有錯。

我開始猜測,是不是老師寫錯了什麼?按部分查詢試試吧,URL是個專有名詞,這個應該不會變,所以我

  1. 按了一下ESC鍵
  2. 輸入  /URL
  3. 按下回車

結果是找到了,我發現了下圖所示:

一看到人家官方文件裡面的C是大寫的我立刻就明白了,我們大資料書的作者應該也在藍翔進修過挖掘機技術。書上明明是小寫c,為了證實我的說法,我還特意拍了一張照片:

 

接著我把hive-site.xml裡面所有的connection都改成了大寫的Connection,然後再進行mysql資料庫初始化,這次成功了!

 

先吐槽一下hive作者,如果你自己把<name>裡面的內容寫好,<value>裡面的東西我們自己寫,那樣多好。非要整個什麼default檔案,然後讓我們自己建立hive-site.xml檔案。

再吐槽一下我學的教科書《大資料技術基礎實驗教程》,大資料學到這裡算是學了一半了我總共找出來教科書上19處錯誤,注意,教科書啊。這哪裡是大資料教科書,簡直就是《挖掘機技術基礎實驗教程》,到處是坑!

不過我靜下心來思考,其實這樣也挺好,理解的會更深刻。(跳坑跳久了就習慣了!!)

 

參考文章
--------------------- 
作者:firePlumes10 
原文:https://blog.csdn.net/yuyanhsf/article/details/81000522 

 

 

.


看完如果覺得不錯,留個贊再走。


.