问题1:hive依赖检查出现问题,没有通过检查
错误如下:
find: -printf: unknown primary or operator
Current HIVE_LIB is not valid, please export HIVE_LIB='YOUR_LOCAL_HIVE_LIB'
错误原因:mac 下面 find 查找文件命令行不支持 -printf ‘%p:’ ,出错位置是在find-hive-dependency.sh 大概201行的位置。错误代码如下:
hive_lib=`find -L ${hive_lib_dir} -name '*.jar' ! -name '*druid*' ! -name '*slf4j*' ! -name '*avatica*' ! -name '*calcite*' ! -name '*jackson-datatype-joda*' ! -name '*derby*' -printf '%p:' | sed 's/:$//'`
这段命令的意思就是查找相关的jar包,并用冒号把jar包的绝对地址连接起来。
解决办法:用awk代替,修改如下:
hive_lib=`find -L ${hive_lib_dir} -name '*.jar' ! -name '*druid*' ! -name '*slf4j*' ! -name '*avatica*' ! -name '*calcite*' ! -name '*jackson-datatype-joda*' ! -name '*derby*' | awk '{printf "%s:", $1}'|sed 's/:$//'`
问题2:检查hadoop配置的时候出现问题
报错如下
netstat: n: unknown or uninstrumented protocol
熟悉linux 的人都知道这个肯定是使用了 netstat命令参数错误造成的。那么这个肯定是跟网络有关的,于是我很轻松的定位到了 check-port-availability.sh 这个脚本文件中。打开代码一看,果不其然,里面第26行使用了 netstat这个命令
# check the availability of the port
kylin_port_in_use=`netstat -tlpn | grep "\b${kylin_port}\b"`
错误原因其实也跟上一个是一样的,都是因为mac 下不支持某些参数造成的。mac下使用的lsof来替代netstat
修改如下:
kylin_port_in_use=`lsof -i :"${kylin_port}" -sTCP:LISTEN`