zoukankan      html  css  js  c++  java
  • 【翻译】Flink Table Api & SQL — Hive Beta

    本文翻译自官网:Hive Beta https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/hive/

    Flink Table Api & SQL 翻译目录

    Apache Hive已将自己确立为数据仓库生态系统的焦点。 它不仅充当用于大数据分析和ETL的SQL引擎,而且也是数据发现, 定义和演变数据的数据管理平台。

    Flink提供了与Hive的双重集成。 首先是利用Hive的Metastore作为持久性 catalog,以跨会话存储Flink特定的元数据。 第二个是提供Flink作为读取和写入Hive表的替代引擎。

    hive catalog 旨在与现有的 hive 安装程序 “开箱即用” 兼容。 您不需要修改现有的 Hive Metastore 或更改表的数据放置或分区。

    Flink支持Hive 2.3.41.2.1并且依赖于Hive对其他次要版本的兼容性保证。

    如果您使用其他次要Hive版本,例如1.2.2或2.3.1,则还可以选择最接近的版本1.2.1(对于1.2.2)或2.3.4(对于2.3.1)来解决。 例如,您要使用Flink在SQL客户端中集成2.3.1 hive版本,只需在YAML配置中将hive-version设置为2.3.4。 通过Table API创建HiveCatalog实例时,类似地传递版本字符串。

    欢迎用户使用此替代方法尝试不同的版本。 由于仅测试了2.3.4和1.2.1,所以可能存在意外问题。 我们将在将来的版本中测试并支持更多版本。

    依赖

    为了与Hive集成,用户在他们的项目中需要以下依赖项。

     hive 2.3.4

    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-connector-hive_2.11</artifactId>
      <version>1.9.0</version>
      <scope>provided</scope>
    </dependency>
    
    <!-- Hadoop Dependencies -->
    
    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-hadoop-compatibility_2.11</artifactId>
      <version>1.9.0</version>
      <scope>provided</scope>
    </dependency>
    
    <!-- Hive 2.3.4 is built with Hadoop 2.7.2. We pick 2.7.5 which flink-shaded-hadoop is pre-built with, but users can pick their own hadoop version, as long as it's compatible with Hadoop 2.7.2 -->
    
    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-shaded-hadoop-2-uber</artifactId>
      <version>2.7.5-8.0</version>
      <scope>provided</scope>
    </dependency>
    
    <!-- Hive Metastore -->
    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-exec</artifactId>
        <version>2.3.4</version>
    </dependency>

    hive 1.2.1

    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-connector-hive_2.11</artifactId>
      <version>1.9.0</version>
      <scope>provided</scope>
    </dependency>
    
    <!-- Hadoop Dependencies -->
    
    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-hadoop-compatibility_2.11</artifactId>
      <version>1.9.0</version>
      <scope>provided</scope>
    </dependency>
    
    <!-- Hive 1.2.1 is built with Hadoop 2.6.0. We pick 2.6.5 which flink-shaded-hadoop is pre-built with, but users can pick their own hadoop version, as long as it's compatible with Hadoop 2.6.0 -->
    
    <dependency>
      <groupId>org.apache.flink</groupId>
      <artifactId>flink-shaded-hadoop-2-uber</artifactId>
      <version>2.6.5-8.0</version>
      <scope>provided</scope>
    </dependency>
    
    <!-- Hive Metastore -->
    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-metastore</artifactId>
        <version>1.2.1</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.hive</groupId>
        <artifactId>hive-exec</artifactId>
        <version>1.2.1</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.thrift</groupId>
        <artifactId>libfb303</artifactId>
        <version>0.9.3</version>
    </dependency>

    连接到Hive

     通过表环境或YAML配置,使用Hive catalog 连接到现有的Hive安装程序。

    val name            = "myhive"
    val defaultDatabase = "mydatabase"
    val hiveConfDir     = "/opt/hive-conf"
    val version         = "2.3.4" // or 1.2.1
    
    val hive = new HiveCatalog(name, defaultDatabase, hiveConfDir, version)
    tableEnv.registerCatalog("myhive", hive)

    支持的类型

    当前HiveCatalog支持具有以下映射的大多数Flink数据类型:

    Flink Data TypeHive Data Type
    CHAR(p) CHAR(p)
    VARCHAR(p) VARCHAR(p)
    STRING STRING
    BOOLEAN BOOLEAN
    TINYINT TINYINT
    SMALLINT SMALLINT
    INT INT
    BIGINT LONG
    FLOAT FLOAT
    DOUBLE DOUBLE
    DECIMAL(p, s) DECIMAL(p, s)
    DATE DATE
    BYTES BINARY
    ARRAY<T> LIST<T>
    MAP<K, V> MAP<K, V>
    ROW STRUCT

    局限性 

    Hive数据类型中的以下限制会影响Flink和Hive之间的映射:

    • CHAR(p) 最大长度为255
    • VARCHAR(p) 最大长度为65535
    • Hive MAP仅支持原始键类型,而Flink MAP可以是任何数据类型
    • 不支持Hive的 UNION 类型
    • Flink的INTERVAL类型不能映射到Hive INTERVAL类型
    • Hive不支持 Flink TIMESTAMP_WITH_TIME_ZONETIMESTAMP_WITH_LOCAL_TIME_ZONE
    • 由于精度差异,Flink的TIMESTAMP_WITHOUT_TIME_ZONE类型无法映射到Hive的TIMESTAMP类型。
    • Hive不支持Flink 的 MULTISET

    欢迎关注Flink菜鸟公众号,会不定期更新Flink(开发技术)相关的推文

  • 相关阅读:
    文本框小写变大写控制
    SQL2005 递归查询示例,非常方便
    GridView分页后进行添加,删除操作后,仍返回到当前页码
    从ASP.NET 1.1升级到ASP.NET 2.0要考虑的Cookie问题
    英语常用口语
    ASP.NET会话(Session)保存模式
    .NET2005文档自动生成
    JavaScript 弹出窗口总结
    SQL SERVER和SYBASE的渊源
    A versatile HDR Video Production System笔记
  • 原文地址:https://www.cnblogs.com/Springmoon-venn/p/11970015.html
Copyright © 2011-2022 走看看