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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> flink的sql-client,使用hive metastore,连接到指定yarn-session来执行sql -> 正文阅读

[大数据]flink的sql-client,使用hive metastore,连接到指定yarn-session来执行sql

适用于flink1.13+版本

一、准备lib与环境变量

1、把flink-connector-hive_2.11-1.14.4.jar、flink-connector-kafka_2.11-1.14.4.jar、hive-exec-2.3.4.jar、antlr-runtime-3.5.3.jar下载到flink的lib目录
https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/connectors/table/hive/overview/#dependencies

2、把hadoop依赖包下载到flink的lib目录(HADOOP_CLASSPATH环境变量指定的依赖包,不会自动包含到flink on yarn实例里)
https://flink.apache.org/downloads.html#additional-components

3、提供yarn连接信息,yarn-site.xml文件里要准备好resource manager地址

export HADOOP_CONF_DIR=/apps/svr/hadoop-2.9.2/etc/hadoop

二、启动一个flink on yarn实例

用于为sql提供实际执行环境

cd /apps/svr/flink-1.14.4/bin
./yarn-session.sh -jm 2048 -tm 3072 -s 1 -nm flink -d

执行yarn-session.sh后,会在本地残余一个/tmp/.yarn-properties-<username>文件,如果立即继续启动sql-client,则已经可以正常连接到刚刚启动的flink实例。

三、启动sql-client

(一)提供flink on yarn实例的地址

修改flink目录下的conf/flink-conf.yaml文件,指定已有的flink实例:

execution.target: yarn-session
yarn.application.id: application_XXXXXXXXX_0001

sql-client在需要执行sql时,即可连接到yarn上的flink实例来提交job

(二)连接到hive metastore

新版sql-client不再支持使用默认配置文件,只能使用初始化命令文件:

-- 创建catalog,hive-site.xml文件里要准备好metastore服务地址
CREATE CATALOG myhive
  WITH (
    'type' = 'hive',
    'hive-conf-dir' = '/apps/svr/apache-hive-2.3.9-bin/conf'
  );
USE CATALOG myhive;

SET 'execution.runtime-mode' = 'streaming';
SET 'sql-client.execution.result-mode' = 'tableau';
SET 'sql-client.execution.max-table-result.rows' = '10000';
SET 'table.exec.state.ttl' = '1000';
-- 切换到自己的database
-- USE wzp;

启动sql-client:

cd /apps/svr/flink-1.14.4/bin
./sql-client.sh -i sql-cli-init.sql

上述初始化执行环境的sql命令,既可以放在文件里通过-i启动参数执行,也可在启动sql-client后再手动执行

四、执行SQL

flink专用的数据表字段定义信息,放在metastore的table_params表里;
hive原生的数据表字段定义信息,放在metastore的columns_v2表里

(一)操作flink专用的数据表

-- 创建flink专用的动态数据表
CREATE TABLE mykafka (
  `partition` INT METADATA VIRTUAL,
  `offset` BIGINT METADATA VIRTUAL,
  `timestamp` TIMESTAMP_LTZ(3) METADATA VIRTUAL,
  `name` STRING,
  `age` INT
) WITH (
  'connector' = 'kafka',
  'topic' = 'wzp_test_flink',
  'properties.bootstrap.servers' = '10.10.1.1:9092',
  'properties.group.id' = 'wzp',
  'scan.startup.mode' = 'earliest-offset',
  'format' = 'csv'
);

--实时查询,新写入kafka的消息会立即出现在sql-client界面
select * from mykafka;

metastore的table_params表记录了mykafka的字段定义:
metastore

(二)操作hive原生的数据表

SET 'execution.runtime-mode' = 'batch';
load module hive;
use modules hive,core;
set table.sql-dialect=hive;

-- 创建hive原生的数据表
create table tbl_hive (key int,value string);

--创建批处理任务写入数据到hive
insert overwrite table tbl_hive (`key`,`value`) values (5,'e'),(1,'a'),(1,'a'),(3,'c'),(2,'b'),(3,'c'),(3,'c'),(4,'d');

--查询hive的数据表
select * from tbl_hive cluster by key;

在beeline里也可以查询到tbl_hive表里已存在这些数据

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-17 16:30:00  更:2022-07-17 16:31:36 
 
开发: 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年5日历 -2024/5/19 22:46:22-

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