Apache Hive regEx serde:数据类型

dar*_*age 4 regex apache hive

为了处理日志,我想使用Apache Hive regEx serde但我只找到了使用String作为表的列的数据类型的示例.

现在我的问题是:是基于日期的类型,支持整数和数组还是只是字符串?

此示例(和其他)仅使用字符串:

CREATE TABLE access_log (
  remote_ip STRING,
  request_date STRING,
  method STRING,
  request STRING,
  protocol STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES  (
"input.regex" = "([^ ]) . . [([^]]+)] \"([^ ]) ([^ ]) ([^ \"])\" *",
"output.format.string" = "%1$s %2$s %3$s %4$s %5$s"
)
STORED AS TEXTFILE
Run Code Online (Sandbox Code Playgroud)

;

vij*_*mar 6

  • 请参阅SERDE的代码:RegexSerDe的代码github - RegexSerDe代码,所有列必须是STRING类型. - 来自节目评论
  • 如果你想对它做一些调整,写一些自定义Serde代码(如果你擅长java,然后继续)并添加为自定义serde jar像这个例子csv自定义serde
  • 如果没有,请让列类型仅为STRING,并且当您要对任何列进行操作时,请 在查询中使用Casting(在hive中使用cast()函数).

希望这可以帮助 :)