hadoop - 是否可以在同一个 HDFS 目录结构中表示多个配置单元表?

标签 hadoop hive hdfs

是否可以在同一个 HDFS 目录结构中表示多个配置单元表?换句话说,有没有办法让多个配置单元表指向相同/重叠的 HDFS 路径?

这是我的情况:

我有一个名为“mytable”的表,位于 hdfs:/tables/mytable

CREATE EXTERNAL TABLE mytable
(
id int,
...
[a whole bunch of columns]
...
PARTITIONED BY (logname STRING)
STORED AS [I-do-not-know-what-just-yet]
LOCATION 'hdfs:/tables/mytable';

因此,HDFS 将如下所示:

hdfs:/tables/mytable/logname=tarzan/....
hdfs:/tables/mytable/logname=jane/....
hdfs:/tables/mytable/logname=whoa/....

是否有可能在 hdfs:/tables/mytable/logname=tarzan 中有一个名为“tarzan”的配置单元表?与 hive 表“jane”相同,位于 hdfs:/tables/mytable/logname=jane 等。

tarzan、jane、whoa 等子表共享一些列(timestamp、ip_address、country、user_id 和其他一些),但也会有很多它们没有共同的列。

有没有办法将这些数据存储在 HDFS 中一次,然后将其用于我上面描述的多个表?此外,有没有一种方法可以有效地存储数据,因为许多表都有不常见的列?在这种情况下,像 RCFILE 或 PARQUET 这样的文件格式可以工作吗?

非常感谢任何人可以提供的任何提示或帮助,

最佳答案

是的,我们可以有多个具有相同底层 HDFS 目录的 Hive 表。

例子:

  1. 创建表emp并将数据文件file3加载到其中。

    create table emp (id int, name string, salary int) 
    row format delimited 
    fields terminated by ','  
    -- default location would be used
    
    load data 
    local inpath '/home/parv/testfiles/file3' 
    into table emp; 
    
  2. 创建另一个表镜像。当您从mirror 表中选择数据时,它与emp 表(file3 的内容)相同。

    create table mirror (id int, name string, salary int) 
    row format delimited 
    fields terminated by ',' 
    location 'hdfs:///user/hive/warehouse/parv.db/base';
    
  3. 将数据加载到镜像 表中。当您从 mirror 表或 emp 表中选择数据时,它会返回相同的结果(file3 和 file4 的内容)。

    load data 
    local inpath '/home/parv/testfiles/file4' 
    into table mirror;  
    

结论:

  1. 相同的数据文件在表 empmirror 之间共享。
  2. 但是,奇怪的是,HDFS 文件系统只显示emp 表的数据目录,而不显示mirror 表的数据目录。但是,这两个表都存在于配置单元中,因此可以查询。

关于hadoop - 是否可以在同一个 HDFS 目录结构中表示多个配置单元表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21143812/

相关文章:

hadoop - CREATE TABLE 命令在 Hive 查询语言中不起作用

hadoop - 从命令行从 HDFS 中删除文件夹

hadoop - Hadoop 中的内部存储

hadoop - 如何使文件的 hadoop 复制因子更改持久化

sql - 如何将架构添加到 spark Scala 中另一个文件的文件

c++ - Hadoop C++,运行wordcount示例时出错

hadoop - 从 MapReduce 作业向 Hive 添加分区

hadoop - Hive 聚集在多个列上

hadoop - Cloudera中的配置单元查询问题

hadoop - 安装Hadoop.ERROR时出现一些问题:尝试以root用户身份在hdfs namenode上进行操作: