2015-03-30 103 views
0

当我们创建使用蜂巢扩展表

创建外部表的员工(名称字符串,工资浮动)的终止行格式分隔的字段“”位置/ EMP

在/ EMP目录中有2个EMP文件。

所以当我们运行select * from employee时,它从文件广告显示中获取数据。

当有其他文件也会有不同类型的记录时,会发生哪些列与雇员表不匹配,所以当我们运行“select * from employee”时它会尝试加载所有文件?

1.我们可以指定我们要加载的特定文件名吗? 2.我们是否可以在同一地点创建其他表格?

感谢 PRASHANT

回答

0

将加载EMP目录中的所有文件,即使它不匹配表。

您的第一个问题。你可以使用Regex serde.if数据匹配regex,然后加载到表格中。 regex for access log in hive serde

https://github.com/apache/hive/blob/trunk/contrib/src/java/org/apache/hadoop/hive/contrib/serde2/RegexSerDe.java

其他选项:我指着一些links.these链接有一些方法。

when creating an external table in hive can I point the location to specific files in a direcotry?

https://issues.apache.org/jira/browse/HIVE-951

你的第二个问题:是的,我们还可以创建其他表以相同的位置。

0

以下是您的答案 1.如果文件dosent中的数据与表格格式匹配,配置单元不会引发错误。它试图尽可能最好地读取数据。如果某些列的数据缺失,则会为它们设置NULL。

  1. 不,我们不能指定任何表的文件名来读取数据。 Hive会考虑表目录下的所有文件。

  2. 是的,我们可以使用相同的位置创建其他表格。