| |
|
开发:
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 需求需求: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 | +----+--------------------------------+--------------------------------+--------------------------------+ |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |