gpt4 book ai didi

regex - 使用 RegexSerDe 在 Hive 中创建 DDL 时出错

转载 作者:可可西里 更新时间:2023-11-01 15:15:07 33 4
gpt4 key购买 nike

我有分隔符为“,|”的数据。

我按如下方式创建了配置单元 DDL:

      CREATE TABLE player_profile
(
player_id BIGINT COMMENT 'Player Profile Identifier',
change_ts STRING COMMENT 'Change Datetime',
child_birth_year INT COMMENT 'Child Birth Year',
country STRING COMMENT 'Country Code',
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES ('input.regex'='^(\\d+),\\|(.*),\\|(\\d+),\\|(.*)$')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat';

部署此 ddl 时出现流动错误。

 FAILED: Error in metadata: java.lang.RuntimeException: MetaException(message:org.apache.hadoop.hive.serde2.SerDeException org.apache.hadoop.hive.contrib.serde2.RegexSerDe only accepts string columns, but column[0] named player_id has type bigint)
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

我给出的正则表达式有问题吗?如果是这样,这种情况下的正则表达式是什么。

Hive(0.11) regex serde 是否支持 BIGINT?

最佳答案

RegexSerDe 明确检查是否所有列都是字符串。参见 RegexSerDe.java

您可以将所有列更改为字符串,然后在查询数据时在 int 和 string 之间进行转换。

关于regex - 使用 RegexSerDe 在 Hive 中创建 DDL 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24868224/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com