IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【深度好文】Flink1.14.3 Table读取Hive数据仓库 -> 正文阅读

[大数据]【深度好文】Flink1.14.3 Table读取Hive数据仓库

摘要:

  1. 案例使用最新稳定版本Flink1.14.3。
  2. Flink Table和SQL从Flink1.12版本已经成熟,可以在生产上放心使用。
  3. Flink Table和SQL从Flink1.12实现了流批统一的所有特性。
  4. Flink Table和SQL与Hive集成需要特别注意版本的兼容性。

1 需求

需求:Flink Table API从Hive数据仓库读取表数据。

2 添加Maven依赖

FlinkTable集成Hive需引?如下依赖:

<dependency>

??<groupId>org.apache.flink</groupId>

??<artifactId>flink-connector-hive_2.11</artifactId>

??<version>${flink.version}</version>

</dependency>

<dependency>

??<groupId>org.apache.hive</groupId>

??<artifactId>hive-exec</artifactId>

??<version>${hive.version}</version>

??<exclusions>

<exclusion>

??<artifactId>hadoop-hdfs</artifactId>

??<groupId>org.apache.hadoop</groupId>

</exclusion>

??</exclusions>

</dependency>

3 准备Hive数据源

#创建本地文件click.txt

vi click.txt

Mary,./home,2022-02-02 12:00:00

Bob,./cart,2022-02-02 12:00:00

Mary,./prod?id=1,2022-02-02 12:00:05

Liz,./home,2022-02-02 12:01:00

Bob,./prod?id=3,2022-02-02 12:01:30

Mary,./prod?id=7,2022-02-02 12:01:45

#click.txt上传至hdfs

bin/hdfs dfs -put click.txt /data/clicklog/input

#创建Hive数据库

create database if not exists test location "/user/hive/warehouse/test";

use test;

#创建Hive表

drop table clicklog;

create ?table if not exists ?clicklog

(userName string,

url string,

cTime string)

row format delimited fields terminated by ","

stored as textfile;

#加载hdfs中的click.txt至Hive表

load data inpath '/data/clicklog/input/click.txt' into table clicklog;

#查询Hive

select * from clicklog;

4 代码实现

Flink Table API读取Hive的完整代码如下所示。

package com.bigdata.chap02;

import org.apache.flink.table.api.*;

import org.apache.flink.table.catalog.hive.HiveCatalog;

import org.apache.flink.table.module.hive.HiveModule;

public class FlinkTableAPIFromHive {

????public static void main(String[] args) {

????????//1、创建TableEnvironment

????????EnvironmentSettings settings = EnvironmentSettings

????????????????.newInstance()

????????????????.build();

????????TableEnvironment tEnv = TableEnvironment.create(settings);

????????//2、创建HiveCatalog

//hive连接实例

????????String name = "myCatalog";

//hive中的数据库名称

????????String defaultDatabase = "test";

//配置文件hive-site.xml存放在项目中的data/etc/目录

????????String hiveConfDir ????= "data/etc/";

????????//加载Hive Module(可以使用hive的UDF)

????????tEnv.loadModule(name, new HiveModule("2.3.6"));

????????//使用hive方言(hivesql特有的语法)

????????tEnv.getConfig().setSqlDialect(SqlDialect.HIVE);

????????HiveCatalog hive = new HiveCatalog(name, defaultDatabase, hiveConfDir);

????????//3、注册myCatalog

????????tEnv.registerCatalog(name, hive);

????????//4、设置当前sesion使用的catalog和database

????????tEnv.useCatalog(name);

????????tEnv.useDatabase(defaultDatabase);

????????//5、查询hive中的表

????????tEnv.executeSql("select * from clicklog")

????????????????.print();

????}

}

5 导入Hive配置文件

Flink Table API创建HiveCatalog通过如下代码:

HiveCatalog hive = new HiveCatalog(name, defaultDatabase, hiveConfDir);

备注:hiveConfDir参数表示hive-site.xml配置文件路径(data/etc/),Flink Table API通过读取该配置实例化HiveCatalog。

6 测试运行

在idea工具中,右键项目选择Run运行Flink Table,如果能在控制台看到打印如下结果,说明Flink Table API能成功读取Hive数据仓库中的数据。

+----+--------------------------------+--------------------------------+--------------------------------+

| op | ??????????????????????username | ???????????????????????????url | ?????????????????????????ctime |

+----+--------------------------------+--------------------------------+--------------------------------+

| +I | ??????????????????????????Mary | ????????????????????????./home | ???????????2022-02-02 12:00:00 |

| +I | ???????????????????????????Bob | ????????????????????????./cart | ???????????2022-02-02 12:00:00 |

| +I | ??????????????????????????Mary | ???????????????????./prod?id=1 | ???????????2022-02-02 12:00:05 |

| +I | ???????????????????????????Liz | ????????????????????????./home | ???????????2022-02-02 12:01:00 |

| +I | ???????????????????????????Bob | ???????????????????./prod?id=3 | ???????????2022-02-02 12:01:30 |

| +I | ??????????????????????????Mary | ???????????????????./prod?id=7 | ???????????2022-02-02 12:01:45 |

+----+--------------------------------+--------------------------------+--------------------------------+

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-26 11:47:11  更:2022-04-26 11:47:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:34:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码