Hive报错无法验证CSVSerde,已放置对应Jar包仍未解决
解决Hive
Cannot validate serde: com.bizo.hive.serde.csv.CSVSerde 报错 嘿,我来帮你搞定这个Hive Serde的报错问题!你已经把jar包放到hive的lib目录但还是出问题,大概率是这几个原因,咱们一步步排查:
1. 先确认jar包是不是找错了
你现在用的hive-serde-0.10.0-cdh4.2.1.jar是Hive官方自带的serde包,但它里面根本没有com.bizo.hive.serde.csv.CSVSerde这个类!这个Serde是第三方(bizo公司)开发的,得专门下载包含这个类的jar包,比如搜索bizo-hive-serde相关的版本,别再用Hive自带的serde jar凑数啦。
2. 手动在Hive会话里加载jar包
就算把正确的jar放到lib目录,有时候Hive也不会自动加载。你可以在执行建表语句前,先打开Hive CLI跑这句:
ADD JAR /usr/lib/hive/lib/你的正确jar包名称.jar;
记得把“你的正确jar包名称”换成实际的文件名,确保这个jar里确实有com.bizo.hive.serde.csv.CSVSerde类。
3. 改用Hive官方自带的CSV Serde(更省心)
如果你的CDH版本对应的Hive版本在0.14及以上,强烈建议直接用官方自带的CSV Serde,不用依赖第三方jar,稳定性拉满。修改你的建表语句就行:
create table timesheet ( BibNum bigint, Title string, Author string, ISBN string, PublicationYear string, Publisher string, Subjects string, ItemType string, ItemCollection string, FloatingItem string -- 把你省略的字段补全 ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ( "separatorChar" = ",", "quoteChar" = "\"", "escapeChar" = "\\" ) STORED AS TEXTFILE;
要是你的Hive版本低于0.14,那还是得回到第三方Serde的路子,但一定要确保jar包正确。
4. 最后检查权限和配置
别忘了确认/usr/lib/hive/lib目录下的jar包权限没问题,Hive进程能读取到;另外如果你的jar是放在自定义路径,得检查Hive配置里的hive.aux.jars.path参数,把jar路径加进去,不过放在默认lib目录一般不用额外配置。
内容的提问来源于stack exchange,提问作者Gideok Seong
相关产品推荐
相关产品推荐

