【问题标题】:Hive throws an error while creating table "Cannot validate serde: com.cloudera.hive.serde.JSONSerDe"Hive 在创建表时抛出错误“无法验证 serde:com.cloudera.hive.serde.JSONSerDe”
【发布时间】:2016-04-19 05:27:04
【问题描述】:

在 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'

在课堂上添加了json-serde-1.3.6-SNAPSHOT-jar-with-dependencies.jar来解决问题但没有成功

【问题讨论】:

  • 通常这意味着所需的jar在类路径中不可用,请参考(cwiki.apache.org/confluence/display/Hive/HivePlugins)交叉验证您是否已正确添加JAR。
  • 感谢 Manoj 的回复,我想,我正确地添加了一个 json-serde-1.3.6-SNAPSHOT-jar-with-dependencies.jar 作为 Hive 给予确认“添加 /home/edureka/Desktop/ LMS/lib/json-serde-1.3.6-SNAPSHOT-jar-with-dependencies.jar 到类路径”。
  • 另外,当我使用“list jars”检查添加的 jar 时,它向我展示了“json-serde-1.3.6-SNAPSHOT-jar-with-dependencies.jar”
  • 您从哪里获得 JAR?如果它不是来自 cloudera,那么类路径可能会有所不同。例如:org.openx.data.jsonserde.JsonSerDe
  • 偏离航线。我是从网上得到的

标签: java hadoop hive hdfs


【解决方案1】:

终于找到了解决办法。问题在于json-serde-1.3.6-SNAPSHOT-jar-with-dependencies.jar 不同的发行版(Cloudera、Azure 等)需要不同的 JSON-Serde jar 文件。意味着,serde jar 应该与那里的发行版兼容。

我换了 jar,它对我有用。

【讨论】:

  • 嘿,你从哪里得到的 jar 文件?
【解决方案2】:

我在使用 hive 1.2.1 和 hbase 0.98 时遇到了类似的问题。我按照以下步骤操作,问题已解决

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

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

3) 验证 hive-serde-1.2.1.jar 存在于 hive/lib 中

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

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

a) hive.aux.jars.path 字段和

b) hive.added.jars.path 字段

给出路​​径'/usr/local/hive/lib/'。

6) 打开 hive 终端并使用以下命令创建表:-

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");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2023-03-26
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多