Java 配置单元在创建表时抛出错误;无法验证serde:com.cloudera.hive.serde.JSONSerDe";

Java 配置单元在创建表时抛出错误;无法验证serde:com.cloudera.hive.serde.JSONSerDe";,java,hadoop,hive,hdfs,Java,Hadoop,Hive,Hdfs,正在使用apache-hive-0.13.1。 创建表配置单元时抛出如下错误 FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Cannot validate serde: com.cloudera.hive.serde.JSONSerDe 表结构是 create external table tweets(id BigInt, created_at String, scour

正在使用apache-hive-0.13.1。 创建表配置单元时抛出如下错误

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Cannot validate serde: com.cloudera.hive.serde.JSONSerDe
表结构是

create external table tweets(id BigInt, created_at String, scource String, favorited Boolean, retweet_count int, 
retweeted_status Struct < 
    text:String,user:Struct< 
        screen_name:String, name:String>>,
    entities Struct<
        urls:Array<Struct<          
             expanded_url:String>>,
        user_mentions:Array<Struct<
            screen_name:String,
            name:String>>,
        hashtags:Array<Struct<text:String>>>,

text String,
user Struct<
    screen_name:String,
    name:String,
    friends_count:int,
    followers_count:int,
     statuses_count:int,
    verified:boolean, 
    utc_offset:int,
    time_zone:String> , 
in_reply_to_screen_name String)
partitioned by (datehour int)
ROW FORMAT SERDE 'com.cloudera.hive.serde.JSONSerDe'
location '/home/edureka/sachinG'
create external table tweets(id BigInt、created_at String、scource String、favorited Boolean、retweet_count int、,
转发的_状态结构<
文本:字符串,用户:结构
屏幕名称:字符串,名称:字符串>>,
实体结构<
URL:Array>,,
用户提到:数组>,
hashtags:Array>,,
文本字符串,
用户结构<
屏幕名称:字符串,
名称:String,
朋友数:int,
追随者人数:int,
状态计数:int,
已验证:布尔,
utc_偏移量:int,
时区:字符串>,
在\u回复\u至\u屏幕\u名称字符串中)
分区人(datehour int)
行格式SERDE'com.cloudera.hive.SERDE.JSONSerDe'
位置“/home/edureka/sachinG”

在类中添加了一个
json-serde-1.3.6-SNAPSHOT-jar-with-dependencies.jar来解决问题,但没有成功

最后,找到了解决方案。问题在于json-serde-1.3.6-SNAPSHOT-jar-with-dependencies.jar
不同的发行版(Cloudera、Azure等)需要不同的JSON Serde jar文件。也就是说,serde jar应该与there发行版兼容


我更换了jar,它对我起了作用。

在使用Hive1.2.1和hbase 0.98时,我遇到了类似的问题。我遵循了以下步骤,问题得到了解决

1) 已将所有hbase-*文件从hbase/lib位置复制到配置单元/lib目录

2) 已验证hive/lib中是否存在hive-hbase-handler-1.2.1.jar

3) 已验证hive/lib中是否存在hive-serde-1.2.1.jar

4) 已验证zookeeper-3.4.6.jar是否存在于hive/lib中(如果没有,请从hbase/lib复制并粘贴到hive/lib)

5) 在位于hive/conf的“两者”下的hive site.xml中(如果不存在,请使用hive default.xml.template)

a) 蜂巢辅助罐路径字段和

b) hive.added.jars.path字段

给出路径“/usr/local/hive/lib/”

6) 打开配置单元终端并使用以下命令创建表:-

CREATE TABLE emp_hive (
RowKey_HIVE String,
Employee_No int,
Employee_Name String,
Job String,
Mgr int,
Hiredate String,
Salary int,
Commision int,
Department_No int
)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES ("hbase.columns.mapping" =":key,details:Employee_No_hbase,details:Employee_Name_hbase,details:job_hbase,details:Mgr_hbase,details:hiredate_hbase,details:salary_hbase,details:commision_hbase,details:department_no_hbase")
TBLPROPERTIES("hbase.table.name"="emp_hbase");

通常这意味着所需的jar在类路径中不可用,请参考()交叉验证您是否正确添加了jar。感谢Manoj的回复,我想,我正确添加了一个json-serde-1.3.6-SNAPSHOT-jar-with-dependencies.jar作为配置单元的确认“将/home/edureka/Desktop/LMS/lib/json-serde-1.3.6-SNAPSHOT-jar-with-dependencies.jar添加到类路径”。另外,当我用“list jar”检查添加的jar时,它会显示“json-serde-1.3.6-SNAPSHOT-jar-with-dependenciences.jar”“你从哪儿弄来的罐子?如果它不是来自cloudera,那么类路径可能会有所不同。例如:org.openx.data.jsonserde.JsonSerDeoff-course。我从互联网上得到的你从哪里得到jar文件的?