当我们使用
创建时创建外部表employee(name string,salary float)行格式分隔的字段,以','location / emp
结尾在/ \ temp目录中有2个\ temp文件。
因此,当我们从员工运行select *时,它会从文件广告显示中获取数据。
如果其他文件也有不同类型的记录哪个列与employee表不匹配会发生什么,所以当我们运行“select * from employee”时它会尝试加载所有文件?
1.我们可以指定要加载的特定文件名吗? 2.我们可以创建具有相同位置的其他表吗?
由于 PRASHANT
答案 0 :(得分:0)
它将加载emp目录中的所有文件,即使它与表格不匹配。
第一个问题。你可以使用Regex serde。如果你的数据与regex匹配,那么它会加载到表中。 regex for access log in hive serde
其他选项:我指的是一些链接。这些链接有一些方法。
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
第二个问题:是的,我们也可以创建具有相同位置的其他表格。
答案 1 :(得分:0)
这是你的答案 1.如果文件中的数据与表格格式匹配,则hive不会抛出错误。它试图尽可能地读取数据。如果缺少某些列的数据,则会为它们添加NULL。
否我们无法为任何表指定读取数据的文件名。 Hive会考虑表目录下的所有文件。
是的,我们可以创建具有相同位置的其他表格。