更新时间:2024-10-28 GMT+08:00

自定义Hive表行分隔符

操作场景

通常情况下,Hive以文本文件存储的表会以回车作为其行分隔符,即在查询过程中,以回车符作为一行表数据的结束符。但某些数据文件并不是以回车分隔的规则文本格式,而是以某些特殊符号分隔其规则文本。

MRS Hive支持指定不同的字符或字符组合作为Hive文本数据的行分隔符,即在创建表的时候,指定inputformat为SpecifiedDelimiterInputFormat,然后在每次查询前,都设置如下参数来指定分隔符,就可以以指定的分隔符查询表数据。

set hive.textinput.record.delimiter='';

当前版本的Hue组件,不支持导入文件到Hive表时设置多个分符。

操作步骤

  1. 以Hive客户端安装用户登录安装客户端的节点。
  2. 执行以下命令,切换到客户端安装目录,配置环境变量并认证用户。

    cd 客户端安装目录

    source bigdata_env

    kinit Hive业务用户(如果集群未开启Kerberos认证,请跳过该操作)

  3. 执行以下命令登录Hive客户端。

    beeline

  4. 创建表时指定inputFormat和outputFormat:

    CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment], ...)] [ROW FORMAT row_format] STORED AS inputformat 'org.apache.hadoop.hive.contrib.fileformat.SpecifiedDelimiterInputFormat' outputformat 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';

  5. 查询之前指定分隔符配置项:

    set hive.textinput.record.delimiter='!@!';

    Hive会以‘!@!’为行分隔符查询数据。