MAPREDUCE服务 MRS-JSON表中有破损数据导致Hive查询异常:处理步骤

时间:2024-08-27 10:23:56

处理步骤

  1. 下载json-serde-1.3.8-jar-with-dependencies.jar到本地,并将该Jar上传到所有的HiveServer所在节点。
  2. 以客户端安装用户,登录1上传了Jar包并且安装了Hive和HDFS客户端的节点。
  3. 执行以下命令认证用户。

    cd 客户端安装目录

    source bigdata_env

    kinit 具有Hive管理员权限的用户(未开启Kerberos认证的集群跳过此操作)

  4. 执行以下命令在HDFS上创建Jar包存放目录。

    hdfs dfs -mkdir Jar包存放在hdfs中的路径

  5. 执行以下命令将2的Jar上传至HDFS中。

    hdfs dfs -put Jar包存放路径 Jar包存放在hdfs中的路径

  6. 执行以下命令让Hive在执行命令行任务时加载指定Jar包。

    beeline

    set role admin;(未开启Kerberos认证的集群跳过此操作)

    add jar Jar包存放在hdfs中的路径;

  7. 执行以下命令重新创建表:

    create external table if not exists test (

    name string

    )

    row format serde 'org.openx.data.jsonserde.JsonSerDe'

    stored as textfile

    location 'hdfs://hacluster/user/hive/warehouse/database/table/jsondata';

  8. 执行以下命令修改表属性忽略破损的JSON数据:

    ALTER TABLE test SET SERDEPROPERTIES( "ignore.malformed.json" = "true");

    设置该属性后,查询表时若表中有破损的JSON数据默认显示为“NULL”。

  9. 执行以下命令查询表数据:

    select * from test;

    数据查询成功则表示已忽略破损的JSON数据,其中,破损的JSON数据显示为“NULL”:

support.huaweicloud.com/trouble-mrs/mrs_03_0722.html