Hive 具有空格分隔值的配置单元

Hive 具有空格分隔值的配置单元,hive,Hive,我是新加入hive的,我想在以空格分隔的数据上使用它。是否有一种预先存在的方法可以将引号(“”)中的内容组合在一起 我没有理解你问题的最后一部分。加载空格分隔的数据与加载任何其他字符分隔的数据相同: 创建表演示(f1数据类型,…,fn数据类型)行 格式化以“”结尾的分隔字段 一种方法是上面塔里克所说的。 另一个是定义正则表达式 您可以配置单元的RegexSerDe类根据需要定义regex。 让我们来看一个例子: 对于Apache访问日志,有以下格式的示例数据: 10.243.31.1 - - [

我是新加入hive的,我想在以空格分隔的数据上使用它。是否有一种预先存在的方法可以将引号(“”)中的内容组合在一起

我没有理解你问题的最后一部分。加载空格分隔的数据与加载任何其他字符分隔的数据相同:

创建表演示(f1数据类型,…,fn数据类型)行 格式化以“”结尾的分隔字段


一种方法是上面塔里克所说的。 另一个是定义正则表达式

您可以配置单元的RegexSerDe类根据需要定义regex。
让我们来看一个例子:

对于Apache访问日志,有以下格式的示例数据:

10.243.31.1 - - [23/Aug/2013:16:38:07 +0530] "POST /Haas/controller/main.php HTTP/1.1" 200 26 "http://10.232.5.169:81/Haas/view/dashboard.php" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"
10.243.31.1 - - [23/Aug/2013:16:38:07 +0530] "POST /Haas/controller/main.php HTTP/1.1" 200 31 "http://10.232.5.169:81/Haas/view/dashboard.php" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"
10.243.31.1 - - [23/Aug/2013:16:38:13 +0530] "POST /Haas/controller/main.php HTTP/1.1" 200 31 "http://10.232.5.169:81/Haas/view/dashboard.php" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"
现在我们要为它定义正则表达式,并将此数据存储到配置单元表中。 因此,配置单元表架构应该是:

CREATE TABLE apache_log(
  host STRING,
  identity STRING,
  user STRING,
  time STRING,
  request STRING,
  status STRING,
  size STRING,
  referer STRING,
  agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
  "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?",
  "output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s"
)
STORED AS TEXTFILE;

有关更多参考信息,请参考

是否有任何方法指定“”中的内容是一个块,即使它们是空格分隔的。我最终使用了此选项。