Hive - 如何为可变长度的现有hdfs文件编写create语句?

时间:2011-05-12 12:17:43

标签: hadoop hive

所以,我有一个现有的hdfs目录,包含一堆文件。这些文件都是以制表符分隔的。

我有一个蜂巢声明......

create external table
   mytable(
      key string,
      name string,
      address string,
      ssn string)
row format delimited fields
terminated by '09', lines terminted by '10'
STORED AS TEXTFILE location '/MyHiveFiles/data';

除了所有额外的字段外,这种方法效果很好。该文件还包含ssn字段之后的0到x个额外数据元素。它们仍然以制表符分隔,并且'\ n'记录分隔。我可以添加一堆'valuex string'(其中x是额外元素的增量)......但我不知道最终可能会有多少,而且无论如何这似乎都很混乱。

有没有办法告诉配置单元将该行的所有剩余字段放入一个字段,如“其他字符串”?即使它是在hive返回值中的制表符分隔...我也没关系。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

在Hive中创建表基本上只是创建元数据告诉配置单元如何解释文件。 Hive并不“知道”剩下的数据。

如果您将另一列添加为数组并指定COLLECTION ITEMS TERMINATED BY '\0002'(\ 0002或其他一些字符),则选项卡将不会终止数组集合,并且应该作为单个元素返回,包括选项卡。尚未测试过这个。 :)