------------------------------------------------------------
今天同学来问我,他说他的Hive初始化MySQL都尝试了半天了,甚至都重装MySQL了,还是初始化失败。
我过去瞅了一眼,他的hive-site.xml文件中,标签对内部多了几个空格,将空格删除就好了。
这也算是Hive做的不到位的地方吧,就不知道获取XML中的数据的时候trim()一下。
------------------------------------------------------------
Hive安装包下载地址:
https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
事情原因是这样的,我按照书上的步骤一步一步走,到了该用hive初始化MySQL数据库这一步了,满怀期待的敲上命令:
cd ~/hive/bin
./schematool -initSchema -dbType mysql
结果报错了,什么什么
Error: Syntax error: Encountered "
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进行字符串查找的步骤:
比如我要在vi中查找connectionURL这个词
按下回车后发现下图所示,直觉告诉我这深红的颜色代表错误。
翻译一下,果然是找不到connectionURL,我才第一次使用这个命令,就找不到目标,我都开始怀疑这个斜杠后面加字符串是否能够用来查找了,然后我随便试了试斜杠后面加一个字母a,发现确实是能找到a的,说明这个命令没有错。
我开始猜测,是不是老师写错了什么?按部分查找试试吧,URL是个专有名词,这个应该不会变,所以我
结果是找到了,我发现了下图所示:
一看到人家官方文档里面的C是大写的我立刻就明白了,我们大数据书的作者应该也在蓝翔进修过挖掘机技术。书上明明是小写c,为了证实我的说法,我还特意拍了一张照片:
接着我把hive-site.xml里面所有的connection都改成了大写的Connection,然后再进行mysql数据库初始化,这次成功了!
先吐槽一下hive作者,如果你自己把
再吐槽一下我学的教科书《大数据技术基础实验教程》,大数据学到这里算是学了一半了我总共找出来教科书上19处错误,注意,教科书啊。这哪里是大数据教科书,简直就是《挖掘机技术基础实验教程》,到处是坑!
不过我静下心来思考,其实这样也挺好,理解的会更深刻。(跳坑跳久了就习惯了!!)
.
看完如果觉得不错,留个赞再走。
.