【大資料】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進行字串查詢的步驟:
- 按ESC鍵進入命令模式
- 使用一個斜槓 / 作為前導,後面緊跟要查詢的字串
- 按回車鍵
- 按大寫N往上查詢,按小寫n往下查詢
比如我要在vi中查詢connectionURL這個詞
按下回車後發現下圖所示,直覺告訴我這深紅的顏色代表錯誤。
翻譯一下,果然是找不到connectionURL,我才第一次使用這個命令,就找不到目標,我都開始懷疑這個斜槓後面加字串是否能夠用來查找了,然後我隨便試了試斜槓後面加一個字母a,發現確實是能找到a的,說明這個命令沒有錯。
我開始猜測,是不是老師寫錯了什麼?按部分查詢試試吧,URL是個專有名詞,這個應該不會變,所以我
- 按了一下ESC鍵
- 輸入 /URL
- 按下回車
結果是找到了,我發現了下圖所示:
一看到人家官方文件裡面的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
.
看完如果覺得不錯,留個贊再走。
.