暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

0078.C CDP平台hive表和impala表关系及如何确认impala所创建表为普通表还是kudu外表

rundba 2021-08-01
4638

文中对两个问题进行概述:

CDP平台hive表和impala表关系;

如何确认impala所创建表为普通表还是kudu外部表。

说明:专业术语中并无普通表一说,本文泛指表类型,分为普通表和kudu外部表。

0.ENV

CentOS 7.6;

CDP 7.1.4

问题1:impala可以访问kudu和hive,那我在impala上建了schema,他是仅存在于impala,还是说hive、kudu上也有了?

答:

通过验证,impala中创建普通表和kudu外部表,hive中都会同步生成,impala共用hive元数据。

kudu外部表数据不受Impala管理,元数据存在在hive中,并且删除此表不会将表从其源位置(此处为Kudu)丢弃,相反,它只会去除Impala和Kudu之间的映射。

问题2:我使用impala下的kudu表,如何知道是普通表还是kudu表?

2.1 通过建表语句,可以查询到该表是kudu表还是hive表。

2.2 查询语句

    show create table kudu3;

    2.3 查询结果

    1) 通过hive查询普通表rundba的创建语句:

      CREATE EXTERNAL TABLE `rundba`(                                               
      `id` int,
      `name` string,
      `area` string)
      ROW FORMAT SERDE
      'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
      WITH SERDEPROPERTIES (
      'field.delim'=',',
      'serialization.format'=',')
      STORED AS INPUTFORMAT
      'org.apache.hadoop.mapred.TextInputFormat'
      OUTPUTFORMAT
      'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
      LOCATION
      'hdfs://nameservice1/warehouse/tablespace/external/hive/it01.db/it01/rundba'
      TBLPROPERTIES (
      'bucketing_version'='2',
      'transient_lastDdlTime'='1624603860')

      查询结果显示rundba表为外部表,非kudu外部表。

      2) 通过impala查询普通表rundba的创建语句:

        CREATE EXTERNAL TABLE it01.rundba (
        id INT,
        name STRING,
        area STRING
        )
        ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
        WITH SERDEPROPERTIES ('field.delim'=',', 'serialization.format'=',')
        STORED AS TEXTFILE
        LOCATION 'hdfs://nameservice1/warehouse/tablespace/external/hive/it01.db/it01/rundba'
        TBLPROPERTIES ('bucketing_version'='2', 'numFiles'='2', 'numFilesErasureCoded'='0', 'totalSize'='133')

        查询结果显示rundba表为外部表,非kudu外部表。

        3) 通过hive查询kudu外表的创建语句:

          CREATE EXTERNAL TABLE `kudu3`(                                                                          
          `key` string COMMENT '',
          `value` string COMMENT '')
          ROW FORMAT SERDE
          'org.apache.hadoop.hive.kudu.KuduSerDe'
          STORED BY
          'org.apache.hadoop.hive.kudu.KuduStorageHandler'
          LOCATION
          'hdfs://nameservice1/warehouse/tablespace/external/hive/it01.db/kudu3'
          TBLPROPERTIES (
          'TRANSLATED_TO_EXTERNAL'='TRUE',
          'external.table.purge'='TRUE',
          'kudu.master_addresses'='cm.rundba.com,nn1.rundba.com,nn2.rundba.com',
          'kudu.table_name'='impala::it01.kudu3',
          'transient_lastDdlTime'='1625113707')

          查询结果显示kudu3表为kudu外部表,非普通表。

          4) 通过impala查询kudu外表的创建语句:

            CREATE EXTERNAL TABLE it01.kudu3 (
            key STRING NOT NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
            value STRING NULL ENCODING AUTO_ENCODING COMPRESSION DEFAULT_COMPRESSION,
            PRIMARY KEY (key)
            )
            PARTITION BY HASH (key) PARTITIONS 16
            STORED AS KUDU
            TBLPROPERTIES ('external.table.purge'='TRUE', 'kudu.master_addresses'='cm.rundba.com,nn1.rundba.com,nn2.rundba.com')

            查询结果显示kudu3表为kudu外部表,非普通表。

            3. 小结

            通过部分实验和说明对2个问题进行说明,详见上文。

            -  完 -

            旨在交流,不足之处,还望抛砖。

            作者:王坤,微信公众号:rundba,欢迎转载,转载请注明出处。

            如需公众号转发,请联系wx: landnow。

            文章转载自rundba,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论