我正在尝试导入包含引用字段的文件。我发现了csv-serde JAR并试图用它来取得最小的成功。
我从以下位置下载了JAR: https://github.com/ogrodnek/csv-serde
我在/ tmp目录中添加到我的HDFS系统。
当我尝试在Ambari中使用View to HIVE时,我设置了以下内容:
ADD JAR /tmp/csv-serde-1.1.2-0.11.0-all.jar;
这会引发文件不存在的错误:
H110无法提交声明。处理语句时出错: /tmp/csv-serde-1.1.2-0.11.0-all.jar不存在[ERROR_STATUS]
然后我从终端呼叫hive尝试:
蜂房> ADD JAR /tmp/csv-serde-1.1.2-0.11.0-all.jar;
这成功了。然后我创建我的EXTERNAL TABLE,然后选择一些字段以确保它在CLI配置单元环境中是好的并且一切正常。
然后我从Ambari内部回到Hive View,当我在桌子上运行任何类型的操作时,我得到:
H110无法提交声明。编译语句时出错: FAILED:RuntimeException MetaException(消息:java.lang.ClassNotFoundException类 找不到com.bizo.hive.serde.csv.CSVSerde)[ERROR_STATUS]
当我尝试通过ODBC驱动器从MS SQL查询时,我也会收到同样的错误。
我已经在这个论坛上看了很多帖子,关于添加所谓的.jar以及这个和那个:
/ usr / lib中/蜂巢
在基本操作系统级别或HDFS文件系统中,该目录不会在我的群集上退出。我应该在何处以及如何将.jar文件放在hive CLI之外查询我的表格?
答案 0 :(得分:0)
您需要将jar放在HDFS中的某个位置。许多人在HDFS中使用/ tmp,就像使用本地FS一样。例如:
hdfs dfs -put /tmp/csv-serde-1.1.2-0.11.0-all.jar /tmp
然后当你在Hive View中时,你会
ADD JAR hdfs://$HOSTNAME:$PORTNUM/tmp/csv-serde-1.1.2-0.11.0-all.jar;
这应该有效并允许您查询数据。
答案 1 :(得分:0)
尝试完整路径,例如:
ADD JAR hdfs://<host>/<port>/tmp/csv-serde-1.1.2-0.11.0-all.jar;
如果出于某种原因,Ambari查看器中正在播放的配置不同,并且未定义默认FS,则可以使用。
您提到的另一个选项 - 我相信只要它位于运行配置单元服务器的同一主机上,并且hive-site.xml指向它,那么将jar放入哪个目录并不重要。选择文件系统上的任何位置(例如,/ home / myname / jars)在配置单元服务器计算机上编辑hive-site.xml
<property>
<name>hive.aux.jars.path</name>
<value>/home/myname/jars</value>
</property>
并将csv-serde-1.1.2-0.11.0-all.jar复制到/ home / myname / jars(在本地fs上,而不是在hdfs上)。重启配置单元并尝试。在这种方法中,您根本不需要使用ADD JAR - jar将自动包含在hive服务器类路径中。
我读到但从未尝试过的另一个选项是将jar放在hive lib目录中。您也可以尝试,但请务必先重新启动配置单元。
关于ADD JAR的注意事项:ADD JAR命令和稍后使用它的查询必须在同一会话中执行。 Hive CLI中的命令位于单个会话中,因此可以正常运行。我不知道Ambari Hive视图如何管理会话。
答案 2 :(得分:0)
例如,如果jar存在于HDFS中:
hive>add jar hdfs:///tmp/csv-serde-1.1.2-0.11.0-all.jar;
确实返回了
converting to local hdfs:///tmp/csv-serde-1.1.2-0.11.0-all.jar
Added [/tmp/d6528831-4f3c-41e4-a4cf-121a63796a0f_resources/csv-serde-1.1.2-0.11.0-all.jar] to class path
Added resources: [hdfs:///tmp/csv-serde-1.1.2-0.11.0-all.jar]
示例,如果jar存在于本地文件系统中
hive>add jar file:///tmp/csv-serde-1.1.2-0.11.0-all.jar;
...