今天在启动Pig客户端的时候,命令行出现了下面这个问题。
根据命令行的提示,我们打开bug所记录的日志。
vim /etc/profile.d/pig_1582816803489.log
ERROR 2998: Unhandled internal error. jline.Terminal.getTerminal()Ljline/Terminal;
java.lang.NoSuchMethodError: jline.Terminal.getTerminal()Ljline/Terminal;
at jline.ConsoleReader.<init>(ConsoleReader.java:174)
at jline.ConsoleReader.<init>(ConsoleReader.java:169)
at org.apache.pig.Main.run(Main.java:555)
at org.apache.pig.Main.main(Main.java:176)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
后来经过不断的在网上尝试解决方案,
在$HADOOP_HOME/share/hadoop/yarn/lib中把jline jar删除(可先保存再删除,防止误删)
于是我们找到对应的目录下,一眼就找到了我们需要删除的那个jar
执行删除命令
rm -rf jline-2.11.jar
删除完,重新启动Pig的命令行shell
pig -x local
看到左下角出现grunt
的时候,我就知道启动成功了。(Grunt是与Pig进行交互的shell环境)