极速网址导航 | 全网优质资源一站式聚合平台 | 智能分类精准直达高效上网入口
免费加入

热度:

编号:61753

分类:博客日志

加入:2025-03-18 08:28:45

点入:2025-03-18 08:28:46

备案:-

名称:-

SEO更新时间
2025-03-18T08:28:52

百度权重:百度权重0
百度移动:百度移动0
360 权重:360权重0
搜狗权重:搜狗权重0
鸣灭的博客

访问网站

http://www.herefreelucky.com

举报/报错
网站标签

typechophpblog


网站描述

Yourdescriptionhere.


上一篇:聚氨酯保温管厂家

下一篇:有车网

seo综合信息
SEO信息 百度来访IP:- | 移动端来访IP:- | 出站链接:0 | 站内链接:0
IP网速: IP地址:- 地址:- | 网速:595毫秒
ALEXA排名 世界排名:- | 预估IP:- | 预估PV:-
备案信息 - | 名称:- | 已创建:未知
收录 百度 360 搜狗 谷歌
查询 0 0 0 0
电脑关键词 手机关键词 页面友好 首页位置 索引 近期收录
0 0 电脑端优秀 - 0 0
服务器信息 协议类型 - 页面类型 - 服务器类型 - 程序支持 - 连接标识 - 消息发送 - GZIP检测 - 源文件大小 - 压缩后大小 - 压缩率 -
网站快照

鸣 灭 的 博 客 鸣 灭 的 博 客 Y o u r d e s c r i p t i o n h e r e . 搜 索 关 键 字 搜 索 首 页 示 例 页 面 R a n g e r P a i m o n 插 件 作 者 : h e r e f r e e 时 间 : 2 0 2 4 1 2 3 1 分 类 : p a i m o n , 大 数 据 组 件 评 论 简 介 A p a c h e R a n g e r 为 H a d o o p 体 系 提 供 了 同 意 的 安 全 体 系 , 包 括 访 问 权 限 控 制 和 统 一 的 审 计 ( 记 录 谁 访 问 R a n g e r 进 行 权 限 设 置 或 者 校 验 等 操 作 ) 。 如 果 想 要 开 发 一 个 R a n g e r 的 插 件 主 要 三 个 部 分 : R a n g e r 服 务 端 : 需 要 定 义 一 个 服 务 类 型 J S O N 文 件 上 传 给 R a n g e r S e r v i c e , 以 及 实 现 一 个 R a n g e r B a s e S e r v i c e 类 作 为 R a n g e r 服 务 的 资 源 查 找 , 或 者 配 置 检 验 的 j a r 包 放 到 R a n g e r 服 务 的 r a n g e p l u g i n s / 目 录 。 R a n g e r 鉴 权 的 插 件 : 根 据 R a n g e r 提 供 的 接 口 实 现 一 个 鉴 权 的 插 件 , 这 个 插 件 会 定 时 从 R a n g e r S e r v i c e 端 将 权 限 同 步 到 本 地 , 需 要 鉴 权 的 服 务 可 以 用 对 应 的 接 口 来 进 行 权 限 校 验 。 很 多 服 务 例 如 d o r i s , h i v e 是 将 这 个 插 件 集 成 到 了 他 们 的 服 务 中 , 当 然 也 可 以 拿 出 来 单 独 使 用 , 例 如 自 己 解 析 S q l 语 句 拿 到 用 户 以 及 对 应 表 时 在 调 用 插 件 接 口 进 行 鉴 权 。 R a n g e r 授 权 a p i : 这 一 部 分 可 以 通 过 R a n g e r 提 供 的 U I 手 动 进 行 添 加 , r a n g e r 也 提 供 了 a p i , 用 户 可 以 通 过 a p i 进 行 新 增 权 限 , 或 者 删 除 更 改 权 限 等 。 权 限 这 块 R a n g e r 内 称 之 为 R a n g e r P o l i c y 策 略 。 R a n g e r 服 务 端 实 现 R a n g e r B a s e S e r v i c e 类 p u b l i c c l a s s R a n g e r S e r v i c e P a i m o n e x t e n d s R a n g e r B a s e S e r v i c e @ O v e r r i d e p u b l i c L i s t l o o k u p R e s o u r c e ( R e s o u r c e L o o k u p C o n t e x t r e s o u r c e L o o k u p C o n t e x t ) t h r o w s E x c e p t i o n } 此 类 有 两 个 方 法 , 都 是 用 于 在 R a n g e r S e r v i c e U I 上 做 资 源 查 询 , 或 者 配 置 检 验 时 用 的 , 可 以 不 做 实 现 , 直 接 返 回 空 也 没 问 题 。 之 后 需 要 将 实 现 的 j a r 包 放 入 r a n g e p l u g i n s / 目 录 下 之 后 重 启 R a n g e r 服 务 。 服 务 定 义 描 述 文 件 , v a l i d a t i o n R e g E x : , v a l i d a t i o n M e s s a g e : , u i H i n t : , a c c e s s T y p e R e s t r i c t i o n s : [ c r e a t e , s h o w , a l t e r , d r o p ] , l a b e l : P a i m o n C a t a l o g , d e s c r i p t i o n : P a i m o n C a t a l o g } , , v a l i d a t i o n R e g E x : , v a l i d a t i o n M e s s a g e : , u i H i n t : , a c c e s s T y p e R e s t r i c t i o n s : [ c r e a t e , s h o w , a l t e r , d r o p ] , l a b e l : P a i m o n D a t a b a s e , d e s c r i p t i o n : P a i m o n D a t a b a s e } , , v a l i d a t i o n R e g E x : , v a l i d a t i o n M e s s a g e : , u i H i n t : , a c c e s s T y p e R e s t r i c t i o n s : [ c r e a t e , s h o w , a l t e r , d r o p , i n s e r t , s e l e c t ] , l a b e l : P a i m o n T a b l e , d e s c r i p t i o n : P a i m o n T a b l e } , , v a l i d a t i o n R e g E x : , v a l i d a t i o n M e s s a g e : , u i H i n t : , a c c e s s T y p e R e s t r i c t i o n s : [ s e l e c t ] , l a b e l : P a i m o n C o l u m n , d e s c r i p t i o n : P a i m o n C o l u m n } ] , / / 需 要 进 行 校 验 的 访 问 类 型 a c c e s s T y p e s : [ , , , , , , ] , / / r a n g e r s e r v i c e U I 上 需 要 填 写 的 配 置 , R a n g e r B a s e S e r v i c e 的 v a l i d a t e C o n f i g 方 法 就 是 对 这 些 配 置 进 行 校 验 c o n f i g s : [ , , , ] , e n u m s : [ ] , c o n t e x t E n r i c h e r s : [ ] , p o l i c y C o n d i t i o n s : [ ] , / / 对 数 据 某 些 字 段 进 行 脱 敏 使 用 d a t a M a s k D e f : ] , r e s o u r c e s : [ , l o o k u p S u p p o r t e d : t r u e , u i H i n t : } , , l o o k u p S u p p o r t e d : t r u e , u i H i n t : } , , l o o k u p S u p p o r t e d : t r u e , u i H i n t : } , , l o o k u p S u p p o r t e d : t r u e , u i H i n t : } ] , / / 脱 敏 的 函 数 m a s k T y p e s : [ ) , d a t a M a s k O p t i o n s : } , , 4 , x , x , x , 1 , 1 ) } , , 4 , x , x , x , 1 , 1 ) } , ) } , , , , x , x , x , 1 , 1 , 1 , 0 , 1 ) } , ] } , / / 对 数 据 行 级 过 滤 r o w F i l t e r D e f : ] , r e s o u r c e s : [ , l o o k u p S u p p o r t e d : t r u e , m a n d a t o r y : t r u e , u i H i n t : } , , l o o k u p S u p p o r t e d : t r u e , m a n d a t o r y : t r u e , u i H i n t : } , , l o o k u p S u p p o r t e d : t r u e , m a n d a t o r y : t r u e , u i H i n t : } ] } } 说 白 了 就 是 定 义 一 些 资 源 , 以 及 对 这 些 资 源 进 行 校 验 的 访 问 类 型 。 例 如 t a b l e 资 源 支 持 的 访 问 类 型 是 c r e a t e , s h o w , a l t e r , d r o p , i n s e r t , s e l e c t 。 这 里 简 单 说 一 下 d a t a M a s k D e f , 例 如 用 户 查 询 时 想 对 某 些 字 段 进 行 脱 密 , 他 的 查 询 s q l 是 : S E L E C T N A M E , P H O N E F R O M U S E R ; 对 p h o n e 字 段 想 做 脱 敏 的 话 可 以 将 查 询 修 改 为 : S E L E C T N A M E , C A S T ( m a s k ( P H O N E ) A S S T R I N G ) F R O M U S E R 。 实 现 这 个 功 能 就 需 要 平 台 侧 拿 到 s q l 之 后 对 s q l 进 行 解 析 得 到 表 的 字 段 , 之 后 访 问 R a n g e r 判 断 这 个 字 段 需 不 需 要 进 行 d a t a m a s k , 需 要 的 或 就 将 其 转 换 成 对 应 的 函 数 。 h t t p s : / / j u e j i n . c n / p o s t / 7 2 3 1 8 5 8 3 7 4 8 2 7 9 3 3 7 5 3 这 篇 文 章 讲 的 更 细 致 一 些 , 可 以 参 考 。 注 意 : r a n g e 只 是 用 做 记 录 哪 些 表 的 字 段 需 要 做 d a t a m a s k , 具 体 解 析 s q l 之 类 的 需 要 平 台 自 己 去 做 , 可 以 将 R a n g e r 当 做 一 个 记 录 了 权 限 相 关 信 息 的 数 据 库 来 看 。 R a n g e r P l u g i n r a n g e r P l u g i n 会 定 时 从 s e r v i c e l o a d 相 关 p o l i c y 到 本 地 做 鉴 权 。 需 要 定 义 三 个 x m l 文 件 。 需 要 将 以 下 三 个 文 件 放 在 r e s o u r c e s 文 件 下 , 或 者 放 在 j a v a 启 动 时 c l a s s p a t h 下 : r a n g e r p a i m o n d e v a u d i t . x m l r a n g e r p a i m o n d e v p o l i c y m g r s s l . x m l x a s e c u r e . p o l i c y m g r . c l i e n t s s l . k e y s t o r e h a d o o p d e v c l i e n t c e r t . j k s J a v a K e y s t o r e f i l e s x a s e c u r e . p o l i c y m g r . c l i e n t s s l . t r u s t s t o r e c a c e r t s x a s e c u r e . j k s j a v a t r u s t s t o r e f i l e x a s e c u r e . p o l i c y m g r . c l i e n t s s l . k e y s t o r e . c r e d e n t i a l . f i l e j c e k s : / / f i l e / U s e r / x x x x / w o r k / k e y s t o r e h a d o o p d e v s s l . j c e k s x a s e c u r e . p o l i c y m g r . c l i e n t s s l . t r u s t s t o r e . c r e d e n t i a l . f i l e j c e k s : / / f i l e / U s e r / x x x / w o r k / t r u s t s t o r e h a d o o p d e v s s l . j c e k s r a n g e r p a i m o n d e v s e c u r i t y . x m l r a n g e r . p l u g i n . p a i m o n d e v . s e r v i c e . n a m e p a i m o n r t r a n g e r . p l u g i n . p a i m o n d e v . p o l i c y . s o u r c e . i m p l o r g . a p a c h e . r a n g e r . a d m i n . c l i e n t . R a n g e r A d m i n R E S T C l i e n t r a n g e r . p l u g i n . p a i m o n d e v . p o l i c y . r e s t . u r l x x x x x x r a n g e r . p l u g i n . p a i m o n d e v . p o l i c y . p o l l I n t e r v a l M s 3 0 0 0 0 H o w o f t e n t o p o l l f o r c h a n g e s i n p o l i c i e s ? r a n g e r . p l u g i n . p a i m o n d e v . p o l i c y . r e s t . s s l . c o n f i g . f i l e r a n g e r p a i m o n p o l i c y m g r s s l . x m l P a t h t o t h e f i l e c o n t a i n i n g S S L d e t a i l s t o c o n t a c t R a n g e r A d m i n r a n g e r . p l u g i n . p a i m o n d e v . p o l i c y . c a c h e . d i r / U s e r s / x x x x / w o r k / c a c h e D i r e c t o r y w h e r e R a n g e r p o l i c i e s a r e c a c h e d a f t e r s u c c e s s f u l r e t r i e v a l f r o m t h e s o u r c e 实 现 P l u g i n 以 及 做 验 证 , 此 处 c h e c k P e r m i s s i o n ( ) 方 法 更 详 细 的 实 现 可 以 看 , 贴 出 的 代 码 只 是 做 个 示 例 。 h t t p s : / / g i t h u b . c o m / a p a c h e / r a n g e r / c o m p a r e / m a s t e r . . . h e r e f r e e : r a n g e r : s u p p o r t p a i m o n r a n g e r p u b l i c c l a s s R a n g e r P a i m o n P l u g i n e x t e n d s R a n g e r B a s e P l u g i n p u b l i c R a n g e r P a i m o n P l u g i n ( S t r i n g s e r v i c e T y p e , S t r i n g s e r v i c e N a m e ) } p u b l i c b o o l e a n c h e c k P e r m i s s i o n ( A c c e s s T y p e a c c e s s T y p e , P r i v i l e g e d E n t i t y e n t i t y , U s e r G r o u p I n f o r m a t i o n u g i ) R a n g e r A p i 用 户 可 以 使 用 A p i 方 式 来 对 p o l i c y 进 行 增 删 改 查 , 当 前 也 可 以 在 r a n g e r S e r v i c e U I 上 进 行 操 作 , 这 里 记 录 下 如 何 使 用 a p i 方 式 创 建 p o l i c y 。 r a n g e r 官 方 a p i 文 档 h t t p s : / / c w i k i . a p a c h e . o r g / c o n f l u e n c e / d i s p l a y / R A N G E R / R a n g e r + C l i e n t + L i b r a r i e s p u b l i c c l a s s P a i m o n P o l i c y M a n a g e r e l s e } } p u b l i c b o o l e a n c h e c k P o l i c y ( R a n g e r P o l i c y r a n g e r P o l i c y , S t r i n g g r o u p , S t r i n g p e r m i s s i o n O p ) f o r ( R a n g e r P o l i c y . R a n g e r P o l i c y I t e m A c c e s s a c c e s s : p o l i c y I t e m . g e t A c c e s s e s ( ) ) } } r e t u r n f a l s e ; } p u b l i c R a n g e r P o l i c y c r e a t e P o l i c y ( S t r i n g g r o u p , S t r i n g p o l i c y N a m e , S t r i n g d b n a m e , S t r i n g t b N a m e , L i s t p e r m i s s i o n O p s L i s t ) r a n g e r P o l i c y . s e t P o l i c y I t e m s ( r a n g e r P o l i c y I t e m L i s t ) ; r e t u r n r a n g e r P o l i c y ; } p u b l i c s t a t i c M a p c r e a t e R e s o u r c e ( S t r i n g d b N a m e , S t r i n g t b N a m e ) p u b l i c R a n g e r P o l i c y . R a n g e r P o l i c y I t e m c r e a t e R a n g e r P o l i c y I t e m ( S t r i n g g r o u p , S t r i n g p e r m i s s i o n ) p r i v a t e R a n g e r P o l i c y a d d P o l i c y I t e r m ( R a n g e r P o l i c y r a n g e r P o l i c y , S t r i n g g r o u p , L i s t p e r m i s s i o n O p L i s t ) L i s t p o l i c y I t e m s = r a n g e r P o l i c y . g e t P o l i c y I t e m s ( ) ; p o l i c y I t e m s . a d d A l l ( a d d R a n g e r P o l i c y I t e m L i s t ) ; r e t u r n r a n g e r P o l i c y ; } } A p a c h e P a i m o n F i l t e r 实 现 作 者 : h e r e f r e e 时 间 : 2 0 2 4 1 2 3 0 分 类 : p a i m o n , 大 数 据 组 件 评 论 在 F l i n k s q l 解 析 的 文 章 中 , 我 们 了 解 了 f i l t e r 是 如 何 从 s q l 下 发 到 p a i m o n , 本 文 我 们 介 绍 下 p a i m o n 拿 到 这 些 f i l t e r 是 如 何 进 行 优 化 的 。 F l i n k P u s h D o w n F l i n k 下 发 到 P a i m o n 用 于 过 滤 的 接 口 : 1 . S u p o r t s F i l t e r P u s h D o w n 用 于 下 推 w h e r e 语 句 里 面 的 f i l t e r , 注 意 返 回 值 是 两 个 L i s t , a c c e p t e d F i l t e r s 表 示 S o u r c e 节 点 可 以 使 用 的 f i l t e r , r e m a i n i n g F i l t e r s 表 示 不 可 以 使 用 的 f i l t e r 。 a c c e p t e d F i l t e r s 可 以 帮 助 F l i n k 优 化 执 行 计 划 , 例 如 对 某 个 值 的 过 滤 原 来 需 要 在 D a t a S t r e a m 里 面 做 , 但 是 S o u r c e 节 点 在 读 取 数 据 时 就 可 以 做 这 部 分 过 滤 了 , F l i n k D a t a S t r e a m 就 不 用 生 成 相 关 节 点 了 。 2 . S u p p o r t s P r o j e c t i o n P u s h D o w n 用 于 下 发 P r o j e c t i o n 也 就 是 s e l e c t 里 面 选 择 的 字 段 , 当 前 p a i m o n 还 未 发 布 的 1 . 0 中 已 经 支 持 了 嵌 套 类 型 ( r o w 里 面 在 套 一 层 r o w ) 的 下 发 了 。 此 处 过 滤 主 要 是 用 于 读 取 P a r q u e t 文 件 或 者 o r c 文 件 时 可 以 通 过 对 应 接 口 直 接 做 C o l u m n 读 。 p u b l i c i n t e r f a c e S u p p o r t s F i l t e r P u s h D o w n } } p u b l i c i n t e r f a c e S u p p o r t s P r o j e c t i o n P u s h D o w n d e f a u l t v o i d a p p l y P r o j e c t i o n ( i n t [ ] [ ] p r o j e c t e d F i e l d s , D a t a T y p e p r o d u c e d D a t a T y p e ) } P a i m o n 过 滤 优 化 版 本 1 . 0 还 未 发 布 的 m a s t e r 分 支 P a i m o n 总 体 的 过 滤 分 为 两 部 分 : 1 . 读 取 元 数 据 时 根 据 元 数 据 里 面 的 一 些 统 计 信 息 , 过 滤 出 真 正 需 要 读 取 的 D a t a s p l i t 下 发 到 下 游 。 2 . 读 取 数 据 文 件 时 , 根 据 F i l e i n d e x 、 d e l e t e v e c t o r 信 息 ( r o w 过 滤 ) 、 p r o j e c t i o n 信 息 ( c l o u m n 级 别 过 滤 ) 来 过 滤 。 R e a d e r M e t a 代 码 M o n i t o r S o u r c e ( 也 就 是 c o n s u m e r i d 方 式 流 消 费 ) p a i m o n 的 元 数 据 里 面 存 着 很 多 统 计 信 息 , 例 如 p a r t i t i o n 字 段 的 m a x / / 此 处 是 s q l 里 面 w h e r e 的 过 滤 信 息 i f ( l i m i t ! = n u l l ) r e t u r n r e a d B u i l d e r . d r o p S t a t s ( ) ; } p a i m o n 真 正 开 始 读 取 元 数 据 , 过 滤 读 取 核 心 逻 辑 在 p l a n 里 面 r e a d B u i l d e r . n e w S t r e a m S c a n ( ) . p l a n ( ) . s p l i t s ( ) ; p l a n 里 面 一 层 层 点 进 去 最 终 实 现 是 在 S n a p s h o t R e a d e r I m p l # r e a d A b s t r a c t F i l e S t o r e S c a n # p l a n o r g . a p a c h e . p a i m o n . o p e r a t i o n . A b s t r a c t F i l e S t o r e S c a n # p l a n p u b l i c P l a n p l a n ( ) i f ( w h o l e B u c k e t F i l t e r E n a b l e d ( ) ) L i s t r e s u l t = f i l e s ; l o n g s c a n D u r a t i o n = ( S y s t e m . n a n o T i m e ( ) s t a r t e d ) / 1 _ 0 0 0 _ 0 0 0 ; i f ( s c a n M e t r i c s ! = n u l l ) } 过 滤 逻 辑 都 发 生 在 上 方 部 分 , A b s t r a c t F i l e S t o r e S c a n 还 有 两 个 子 类 分 别 是 A p p e n d O n l y F i l e S t o r e S c a n ( a p p e n d O n l y 表 ) 与 K e y V a l u e F i l e S t o r e S c a n ( 主 键 表 ) 。 具 体 过 滤 逻 辑 就 不 在 这 展 开 写 了 , 可 以 看 到 以 上 几 个 S c a n 都 有 不 同 的 F i l t e r 的 属 性 值 A b s t r a c t F i l e S t o r e S c a n p r i v a t e F i l t e r l e v e l F i l t e r = n u l l ; p r i v a t e F i l t e r m a n i f e s t E n t r y F i l t e r = n u l l ; p r i v a t e F i l t e r f i l e N a m e F i l t e r = n u l l ; p r i v a t e M a n i f e s t C a c h e F i l t e r m a n i f e s t C a c h e F i l t e r = n u l l ; K e y V a l u e F i l e S t o r e S c a n p r i v a t e P r e d i c a t e k e y F i l t e r ; p r i v a t e P r e d i c a t e v a l u e F i l t e r ; A p p e n d O n l y F i l e S t o r e S c a n p r i v a t e P r e d i c a t e f i l t e r ; 这 些 不 同 的 过 滤 都 是 在 n e w S c a n 时 被 进 一 步 拆 开 。 值 得 一 提 的 是 , f i l e i n d e x 的 过 滤 也 可 能 在 R e a d M e t a 时 发 生 。 当 F i l e I n d e x 数 据 文 件 较 小 时 , 会 存 储 在 元 数 据 里 面 , 具 体 可 见 F i l e I n d e x 篇 讲 解 。 R e a d D a t a F I l e 代 码 R e a d e r O p e r a t o r ( c o n s u m e r i d 方 式 读 取 的 下 一 个 f l i n k 节 点 ) r e a d B u i l d e r . n e w R e a d ( ) . c r e a t e R e a d e r ( s p l i t ) 这 个 S p l i t 就 是 上 游 节 点 传 来 的 数 据 文 件 的 元 信 息 , 各 种 过 滤 都 发 生 在 c r e a t e R e a d e r ( s p l i t ) 里 面 。 主 要 是 d e l e v e c t o r s ( R o w 级 别 ) 过 滤 , f i l e i n d e x 过 滤 , 各 种 文 件 存 储 直 接 读 取 c o l u m n 的 接 口 。 其 中 F i l e I n d e x 相 关 过 滤 、 D e l e t i o n V e c t o r R e a d e r 的 创 建 还 有 传 下 来 的 p r o j e c t i o n 都 在 下 面 代 码 。 o r g . a p a c h e . p a i m o n . o p e r a t i o n . R a w F i l e S p l i t R e a d # c r e a t e F i l e R e a d e r p r i v a t e F i l e R e c o r d R e a d e r c r e a t e F i l e R e a d e r ( B i n a r y R o w p a r t i t i o n , D a t a F i l e M e t a f i l e , D a t a F i l e P a t h F a c t o r y d a t a F i l e P a t h F a c t o r y , F o r m a t R e a d e r M a p p i n g f o r m a t R e a d e r M a p p i n g , I O E x c e p t i o n S u p p l i e r d v F a c t o r y ) t h r o w s I O E x c e p t i o n } F o r m a t R e a d e r C o n t e x t f o r m a t R e a d e r C o n t e x t = n e w F o r m a t R e a d e r C o n t e x t ( f i l e I O , d a t a F i l e P a t h F a c t o r y . t o P a t h ( f i l e ) , f i l e . f i l e S i z e ( ) , f i l e I n d e x R e s u l t ) ; F i l e R e c o r d R e a d e r f i l e R e c o r d R e a d e r = n e w D a t a F i l e R e c o r d R e a d e r ( f o r m a t R e a d e r M a p p i n g . g e t R e a d e r F a c t o r y ( ) , f o r m a t R e a d e r C o n t e x t , f o r m a t R e a d e r M a p p i n g . g e t I n d e x M a p p i n g ( ) , / / p r o j e c t i o n 过 滤 对 应 的 r e a d D a t a F i e l d s 在 这 里 f o r m a t R e a d e r M a p p i n g . g e t C a s t M a p p i n g ( ) , P a r t i t i o n U t i l s . c r e a t e ( f o r m a t R e a d e r M a p p i n g . g e t P a r t i t i o n P a i r ( ) , p a r t i t i o n ) ) ; i f ( f i l e I n d e x R e s u l t i n s t a n c e o f B i t m a p I n d e x R e s u l t ) / / 此 处 创 建 A p p l y D e l e t i o n V e c t o r R e a d e r D e l e t i o n V e c t o r d e l e t i o n V e c t o r = d v F a c t o r y = = n u l l ? n u l l : d v F a c t o r y . g e t ( ) ; i f ( d e l e t i o n V e c t o r ! = n u l l } F l i n k S q l 解 析 流 程 作 者 : h e r e f r e e 时 间 : 2 0 2 4 1 2 3 0 分 类 : p a i m o n , 大 数 据 组 件 评 论 本 文 主 要 简 单 聊 一 下 f l i n k s q l 如 何 解 析 , 并 将 对 应 的 f i l t e r 下 发 到 T a b l e S o u r c e 中 S u p p o r t s F i l t e r P u s h D o w n . a p p l y F i l t e r s 接 口 。 最 后 在 贴 一 下 如 何 使 用 F l i n k 相 关 A p i 来 解 析 s q l 的 示 例 。 F l i n k S q l 解 析 流 程 在 此 处 我 们 主 要 S E L E C T * F R O M T W H E R E f 1 . S q l S q l N o d e 通 过 C a l c i t e 将 S q l 语 句 转 换 成 S q l N o d e 。 P a r s e r I m p l . c l a s s p u b l i c L i s t p a r s e ( S t r i n g s t a t e m e n t ) / / 在 此 处 内 部 实 现 将 s q l 语 句 转 换 成 S q l N o d e S q l N o d e L i s t s q l N o d e L i s t = p a r s e r . p a r s e S q l L i s t ( s t a t e m e n t ) ; L i s t p a r s e d = s q l N o d e L i s t . g e t L i s t ( ) ; P r e c o n d i t i o n s . c h e c k A r g u m e n t ( p a r s e d . s i z e ( ) = = 1 , o n l y s i n g l e s t a t e m e n t s u p p o r t e d ) ; r e t u r n C o l l e c t i o n s . s i n g l e t o n L i s t ( S q l N o d e T o O p e r a t i o n C o n v e r s i o n . c o n v e r t ( p l a n n e r , c a t a l o g M a n a g e r , p a r s e d . g e t ( 0 ) ) . o r E l s e T h r o w ( ( ) n e w T a b l e E x c e p t i o n ( U n s u p p o r t e d q u e r y : + s t a t e m e n t ) ) ) ; } 2 . S q l N o d e S q l N o d e 使 用 F l i n k P l a n n e r I m p l 类 对 S q l N o d e 进 行 v a l i d a t e S q l N o d e T o O p e r a t i o n C o n v e r s i o n . c l a s s p u b l i c s t a t i c O p t i o n a l c o n v e r t ( F l i n k P l a n n e r I m p l f l i n k P l a n n e r , C a t a l o g M a n a g e r c a t a l o g M a n a g e r , S q l N o d e s q l N o d e ) 3 . S q l N o d e O p e r a t i o n ( r e l N o d e ) 注 意 : 查 询 相 关 语 句 会 从 s q l N o d e 转 换 成 的 O p e r a t i o n 里 面 有 r e l N o d e , D D L 之 类 的 语 句 是 没 有 r e l N o d e 的 , 例 如 C r e a t e T a b l e O p e r a t i o n 里 面 含 有 f l i n k 的 C a t a l o g T a b l e 。 将 S q l N o d e 转 换 成 r e l N o d e 并 且 包 在 O p e r a t i o n 里 面 。 o r g . a p a c h e . f l i n k . t a b l e . p l a n n e r . o p e r a t i o n s . c o n v e r t e r s . S q l N o d e C o n v e r t e r s # c o n v e r t S q l N o d e p u b l i c s t a t i c O p t i o n a l c o n v e r t S q l N o d e ( S q l N o d e v a l i d a t e d S q l N o d e , C o n v e r t C o n t e x t c o n t e x t ) S q l N o d e C o n v e r t e r s q l K i n d C o n v e r t e r = S Q L K I N D _ C O N V E R T E R S . g e t ( v a l i d a t e d S q l N o d e . g e t K i n d ( ) ) ; i f ( s q l K i n d C o n v e r t e r ! = n u l l ) e l s e } 执 行 转 换 的 是 o r g . a p a c h e . f l i n k . t a b l e . p l a n n e r . o p e r a t i o n s . c o n v e r t e r s . S q l N o d e C o n v e r t e r # c o n v e r t S q l N o d e , 它 有 多 种 实 现 类 p u b l i c c l a s s S q l Q u e r y C o n v e r t e r i m p l e m e n t s S q l N o d e C o n v e r t e r } 4 . O p e r a t i o n ( R e l N o d e ) R e l N o d e T r a n s f o r m a t i o n 这 是 最 核 心 的 地 方 , 主 要 是 对 R e l N o d e 进 行 O p t i m i z e 。 1 . 首 先 会 将 O p e r a t i o n 里 面 的 R e l N o d e ( L o g i c a l P r o j e c t ) 转 换 成 R e l N o d e ( L o g i c a l S i n k ) 2 . 执 行 o p t i m i z e , 就 是 在 此 处 将 S u p p o r t s F i l t e r P u s h D o w n . a p p l y F i l t e r s 将 过 滤 的 逻 辑 下 推 到 T a b l e S o u r c e , 优 化 时 会 执 行 一 些 优 化 规 则 , o r g . a p a c h e . f l i n k . t a b l e . p l a n n e r . p l a n . r u l e s . l o g i c a l . P u s h F i l t e r I n t o T a b l e S o u r c e S c a n R u l e 就 是 将 P u s h d o w n 下 推 到 T a b l e 的 优 化 规 则 。 o v e r r i d e d e f t r a n s l a t e ( m o d i f y O p e r a t i o n s : u t i l . L i s t [ M o d i f y O p e r a t i o n ] ) : u t i l . L i s t [ T r a n s f o r m a t i o n [ _ ] ] = 下 面 我 们 打 印 一 下 堆 栈 信 息 看 一 下 优 化 后 的 o p t i m i z e d R e l N o d e s 是 不 是 含 有 f i l t e r 信 息 。 我 在 这 是 d e b u g 的 查 询 p a i m o n 表 , 因 此 可 以 看 红 线 部 分 已 经 将 f i l t e r 信 息 转 换 成 了 p a i m o n 表 的 p r e d i c a t e 。 3 . 之 后 就 是 生 成 执 行 图 , 生 成 t r a n s f o r m D A G 了 解 析 S Q L 代 码 示 例 p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) e l s e i f ( o p e r a t i o n i n s t a n c e o f M o d i f y O p e r a t i o n ) } p u b l i c v o i d g e t T a b l e S c a n T a b l e ( R e l N o d e r e l N o d e ) r e l N o d e . g e t I n p u t s ( ) . f o r E a c h ( t h i s : : g e t T a b l e S c a n T a b l e ) ; } A p a c h e P a i m o n l o o k u p j o i n 实 现 作 者 : h e r e f r e e 时 间 : 2 0 2 4 1 2 2 9 分 类 : p a i m o n , 大 数 据 组 件 评 论 l o o k u p j o i n F l i n k l o o k u p 同 步 与 异 步 调 用 的 最 终 实 现 都 是 调 用 F i l e S t o r e L o o k u p F u n c t i o n , 区 别 也 就 是 在 包 了 一 层 对 象 。 p u b l i c s t a t i c L o o k u p R u n t i m e P r o v i d e r c r e a t e ( F i l e S t o r e L o o k u p F u n c t i o n f u n c t i o n , b o o l e a n e n a b l e A s y n c , i n t a s y n c T h r e a d N u m b e r ) 点 进 去 最 终 实 现 也 就 是 在 l o o k u p f u n c t i o n 中 调 用 L o o k u p T a b l e 。 p u b l i c i n t e r f a c e L o o k u p T a b l e e x t e n d s C l o s e a b l e 其 中 l o o k u p T a b l e 有 多 种 不 同 的 实 现 , 下 面 会 进 一 步 讲 。 先 说 下 L o o k u p F u n c t i o n 都 会 做 什 么 o p e n : 根 据 不 同 的 配 置 创 建 不 同 的 l o o k u p T a b l e , 之 后 调 用 l o o k u p T a b l e 的 o p e n 方 法 。 l o o k u p : 首 先 尝 试 t r y R e f r e s h ( 用 于 刷 新 l o o k u p T a b l e 信 息 ) , 之 后 调 用 l o o k u p T a b l e . g e t ( k e y ) 获 取 返 回 结 果 包 装 成 F l i n k R o w 之 后 返 回 F u l l C a c h e L o o k u p T a b l e F u l l C a c h e l o o k u p t a b l e 顾 名 思 义 就 是 将 整 张 p a i m o n 表 的 数 据 都 l o a d 到 本 地 , 这 样 在 加 载 数 据 的 时 候 只 需 要 在 本 地 加 载 数 据 就 好 , 性 能 最 高 , 但 是 由 于 数 据 都 加 载 到 本 地 , 对 磁 盘 要 求 较 大 , 初 始 加 载 慢 。 又 根 据 是 否 为 主 键 表 以 及 j o i n k e y 是 否 为 主 键 又 分 为 以 下 三 种 : N o p r i m a r y K e y l o o k u p T a b l e 、 p r i m a r y K e y L o o k u p T a b l e 、 S e c o n d a r y I n d e x L o o k u p T a b l e 。 F u l l C a c h e L o o k u p T a b l e 主 要 是 依 赖 r o c k s D b + c a c h e 实 现 查 询 加 速 。 N o P r i m a r y K e y L o o k u p T a b l e 略 。 P r i m a r y K e y L o o k u p T a b l e 我 们 这 里 简 要 说 一 下 在 o p e n 时 读 取 以 及 更 新 数 据 时 读 取 p a i m o n 表 的 步 骤 o p e n p u b l i c v o i d o p e n ( ) t h r o w s E x c e p t i o n 在 b o o t s t r a p 中 会 创 建 L o o k u p S t r e a m i n g R e a d e r 读 取 p a i m o n 表 中 数 据 之 后 通 过 B i n a r y E x t e r n a l S o r t B u f f e r 进 行 排 序 , 写 入 到 内 存 , 满 了 之 后 写 磁 盘 , 之 后 在 将 数 据 读 取 出 来 写 入 到 R o c k s D b 的 S S T , 主 键 就 是 p a i m o n 表 的 k e y 。 p r o t e c t e d v o i d b o o t s t r a p ( ) t h r o w s E x c e p t i o n } } M u t a b l e O b j e c t I t e r a t o r k e y I t e r a t o r = b u l k L o a d S o r t e r . s o r t e d I t e r a t o r ( ) ; B i n a r y R o w r o w = n e w B i n a r y R o w ( 2 ) ; T a b l e B u l k L o a d e r b u l k L o a d e r = c r e a t e B u l k L o a d e r ( ) ; t r y } c a t c h ( B u l k L o a d e r . W r i t e E x c e p t i o n e ) b u l k L o a d e r . f i n i s h ( ) ; b u l k L o a d S o r t e r . c l e a r ( ) ; } l o o k u p t r y R e f r e s h ( ) l o o k u p 时 会 首 先 尝 试 t r y R e f r e s h , 如 果 需 要 做 r e f r e s h 时 , 会 读 取 p a i m o n 表 后 续 的 s n a p s h o t 的 元 数 据 文 件 , 之 后 在 根 据 快 照 读 取 数 据 , 将 数 据 更 新 到 R o c k s D b 中 , 之 后 让 C a c h e 中 的 对 应 k e y 失 效 。 在 实 现 上 F a n g y o n g 大 佬 还 实 现 了 个 异 步 更 新 , 具 体 实 现 就 是 开 了 个 线 程 池 , 然 后 提 交 d o R e f r e s h 任 务 p u b l i c v o i d r e f r e s h ( ) t h r o w s E x c e p t i o n . . . d o R e f r e s h ( ) ; } e l s e } ) ; } i f ( c u r r e n t F u t u r e ! = n u l l ) } } 其 中 d o R e s h p r i v a t e v o i d d o R e f r e s h ( ) t h r o w s E x c e p t i o n r e f r e s h ( b a t c h ) ; / / 更 新 r o c k s d b , 失 效 c a c h e } } } / / 读 取 数 据 的 详 细 实 现 就 是 扫 描 出 d a t a s p l i t s , 然 后 用 户 通 过 并 发 或 非 并 发 的 方 式 读 取 , 可 以 看 到 真 正 读 取 数 据 文 件 的 时 候 , 里 面 还 可 以 加 一 些 过 滤 的 优 化 p u b l i c R e c o r d R e a d e r n e x t B a t c h ( b o o l e a n u s e P a r a l l e l i s m ) t h r o w s E x c e p t i o n e l s e r e a d e r = C o n c a t R e c o r d R e a d e r . c r e a t e ( r e a d e r s ) ; } i f ( p r o j e c t e d P r e d i c a t e ! = n u l l ) i f ( c a c h e R o w F i l t e r ! = n u l l ) r e t u r n r e a d e r ; } l o o k u p l o o k u p T a b l e . g e t ( k e y ) 这 块 逻 辑 主 要 是 现 在 C a c h e 中 取 出 数 据 如 果 c a c h e 中 没 有 就 在 R o c k s D b 中 取 出 , 并 存 入 c a c h e S e c o n d a r y I n d e x L o o k u p T a b l e 略 。 P r i m a r y K e y P a r t i a l L o o k u p T a b l e l o c a l T a b l e 懒 加 载 的 方 式 , t a s k M a n a g e r 首 先 会 将 元 数 据 加 载 进 来 , 之 后 当 需 要 l o o k u p 的 数 据 进 来 之 后 , 根 据 元 数 据 信 息 找 到 需 要 读 取 的 数 据 文 件 , 在 进 行 加 载 , 返 回 结 果 。 r e m o t e T a b l e 需 要 通 过 P r o c e d u r e 或 者 A c t i o n 启 动 一 个 单 独 的 F l i n k 任 务 作 为 一 个 s e r v i c e 服 务 。 其 他 f l i n k 任 务 可 以 通 过 调 用 这 个 S e r v i c e 服 务 来 返 回 结 果 。 A p a c h e P a i m o n p r o c e d u r e 实 现 作 者 : h e r e f r e e 时 间 : 2 0 2 4 1 2 2 8 分 类 : p a i m o n , 大 数 据 组 件 评 论 P a i m o n F l i n k P r o c e d u r e h t t p s : / / n i g h t l i e s . a p a c h e . o r g / f l i n k / f l i n k d o c s r e l e a s e 1 . 1 8 / z h / d o c s / d e v / t a b l e / p r o c e d u r e s / F l i n k 接 口 F l i n k P r o c e d u r e 是 依 赖 c a t a l o g 的 , 实 现 自 定 义 的 F l i n k P r o c e d u r e 需 要 继 承 P r o c e d u r e 接 口 p u b l i c i n t e r f a c e P r o c e d u r e 并 且 在 自 定 义 的 c a t a l o g 中 需 要 实 现 两 个 方 法 d e f a u l t L i s t l i s t P r o c e d u r e s ( S t r i n g d b N a m e ) t h r o w s D a t a b a s e N o t E x i s t E x c e p t i o n , C a t a l o g E x c e p t i o n d e f a u l t P r o c e d u r e g e t P r o c e d u r e ( O b j e c t P a t h p r o c e d u r e P a t h ) t h r o w s P r o c e d u r e N o t E x i s t E x c e p t i o n , C a t a l o g E x c e p t i o n l i s t P r o c e d u r e s 用 来 返 回 所 有 用 户 自 定 义 实 现 的 存 储 过 程 的 n a m e , g e t P r o c e d u r e 方 法 传 入 的 p r o c e d u r e P a t h 中 记 录 着 对 应 的 存 储 过 程 n a m e , 需 要 根 据 不 同 的 n a m e 返 回 不 同 的 存 储 过 程 。 P a i m o n 实 现 l i s t P r o d u r e s p u b l i c L i s t l i s t P r o c e d u r e s ( S t r i n g d b N a m e ) t h r o w s D a t a b a s e N o t E x i s t E x c e p t i o n , C a t a l o g E x c e p t i o n r e t u r n P r o c e d u r e U t i l . l i s t P r o c e d u r e s ( ) ; } p u b l i c s t a t i c L i s t l i s t P r o c e d u r e s ( ) p u b l i c s t a t i c L i s t d i s c o v e r I d e n t i f i e r s ( C l a s s L o a d e r c l a s s L o a d e r , C l a s s f a c t o r y C l a s s ) P a i m o n 所 有 的 P r o c e d u r e 都 实 现 了 抽 象 类 P r o c e d u r e B a s e , 抽 象 类 P r o c e d u r e B a s e 又 实 现 了 F l i n k 的 P r o c e d u r e 接 口 。 通 过 S p i 的 方 式 将 所 有 实 现 P r o c e d u r e B a s e 的 类 都 加 载 出 来 , 并 返 回 这 些 类 对 应 的 i d e n t i f i e r ( 这 就 是 对 应 的 存 储 过 程 的 n a m e ) 。 o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . C o m p a c t D a t a b a s e P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . C o m p a c t P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . C r e a t e T a g P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . D e l e t e T a g P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . C r e a t e B r a n c h P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . D e l e t e B r a n c h P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . D r o p P a r t i t i o n P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . M e r g e I n t o P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . R e s e t C o n s u m e r P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . R o l l b a c k T o P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . M i g r a t e T a b l e P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . M i g r a t e F i l e P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . R e m o v e O r p h a n F i l e s P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . Q u e r y S e r v i c e P r o c e d u r e o r g . a p a c h e . p a i m o n . f l i n k . p r o c e d u r e . E x p i r e S n a p s h o t s P r o c e d u r e g e t P r o c e d u r e p u b l i c P r o c e d u r e g e t P r o c e d u r e ( O b j e c t P a t h p r o c e d u r e P a t h ) t h r o w s P r o c e d u r e N o t E x i s t E x c e p t i o n , C a t a l o g E x c e p t i o n p u b l i c s t a t i c O p t i o n a l g e t P r o c e d u r e ( C a t a l o g c a t a l o g , O b j e c t P a t h p r o c e d u r e P a t h ) t r y c a t c h ( F a c t o r y E x c e p t i o n e ) } p u b l i c s t a t i c T d i s c o v e r F a c t o r y ( C l a s s L o a d e r c l a s s L o a d e r , C l a s s f a c t o r y C l a s s , S t r i n g i d e n t i f i e r ) f i n a l L i s t m a t c h i n g F a c t o r i e s = f o u n d F a c t o r i e s . s t r e a m ( ) . f i l t e r ( f f . i d e n t i f i e r ( ) . e q u a l s ( i d e n t i f i e r ) ) . c o l l e c t ( C o l l e c t o r s . t o L i s t ( ) ) ; . . . . . . r e t u r n ( T ) m a t c h i n g F a c t o r i e s . g e t ( 0 ) ; } 可 以 看 到 g e t P r o c e d u r e 也 是 通 过 s p i 方 式 将 所 有 的 类 进 行 加 载 , 并 根 据 传 入 的 存 储 过 程 的 n a m e 返 回 对 应 的 实 现 类 。 1 2 3 4 . . . 1 4 后 一 页 » 最 新 文 章 R a n g e r P a i m o n 插 件 A p a c h e P a i m o n F i l t e r 实 现 F l i n k S q l 解 析 流 程 A p a c h e P a i m o n l o o k u p j o i n 实 现 A p a c h e P a i m o n p r o c e d u r e 实 现 A p a c h e P a i m o n f l i n k c o n n e c t o r 实 现 A p a c h e P a i m o n L S M t r e e ( 杂 记 ) A p a c h e P a i m o n S o u r c e S i n k 实 现 ( 杂 记 ) A p a c h e P a i m o n f i l e i n d e x A p a c h e P a i m o n D e l e t i o n V e c t o r s 最 近 回 复 T y p e c h o : 欢 迎 加 入 T y p e c h o 大 家 族 分 类 数 据 挖 掘 大 数 据 组 件 p a i m o n 机 器 学 习 m y b i t e s S p r i n g . n e t r e d i s a n d r o i d 算 法 错 误 报 错 解 决 A n g u l a r J S J q u e r y j a v a E E 未 分 类 l i n u x d o c k e r 归 档 D e c e m b e r 2 0 2 4 J u l y 2 0 2 1 A p r i l 2 0 2 0 M a r c h 2 0 2 0 J a n u a r y 2 0 2 0 D e c e m b e r 2 0 1 9 N o v e m b e r 2 0 1 9 O c t o b e r 2 0 1 9 S e p t e m b e r 2 0 1 9 O c t o b e r 2 0 1 8 A u g u s t 2 0 1 8 J u l y 2 0 1 8 J u n e 2 0 1 8 J a n u a r y 2 0 1 8 J u n e 2 0 1 7 M a y 2 0 1 7 A p r i l 2 0 1 7 M a r c h 2 0 1 7 N o v e m b e r 2 0 1 6 其 它 登 录 文 章 R S S 评 论 R S S T y p e c h o © 2 0 2 5 鸣 灭 的 博 客 . 由 T y p e c h o 强 力 驱 动 .

站点概括

关于www.herefreelucky.com说明:
www.herefreelucky.com由网友主动性提交被极速网址导航整理收录的,极速网址导航仅提供www.herefreelucky.com的基础信息并免费向大众网友展示,www.herefreelucky.com的是IP地址:- 地址:-,www.herefreelucky.com的百度权重为0、百度手机权重为0、百度收录为0条、360收录为0条、搜狗收录为0条、谷歌收录为0条、百度来访流量大约在-之间、百度手机端来访流量大约在-之间、www.herefreelucky.com的备案号是-、备案人叫-、被百度收录的关键词有0个、手机端关键词有0个、该站点迄今为止已经创建未知。

内容声明:

1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违规信息,如您发现违规内容,请联系我们进行清除处理!
4、本文地址:http://js.caihongdh.com/bokedh/ee3e250c0c0dc983979e.html,复制请保留版权链接!


温馨小提示:在您的网站做上本站友情链接,访问一次即可自动收录并自动排在本站第一位!
您可能还喜欢

便民生活排行榜

618排行榜网站作为您生活和工作的最佳参考,我们精心汇总热门、具人气的排行信息。无论您是追求时尚潮流、科技前沿,还是寻找独特的体验,我们都为您提供了全面的排行榜,助您轻松了解市场动向,做出理性明智的选择。

头条联盟

金橘互联,智慧互联网商业服务提供商。为企业和商户提供一站式专业网站建设、微商城、微官网、餐饮o2o、微信小程序等一体化解决方案。以开放的服务生态为用户提供产品和服务,构建线上线下融合、多渠道营销、开放互通的智能商业服务生态体系,帮助更多企业向智能商业转型升级。

首页

山东聚美新型材料有限公司(18653137385)是“聚美”品牌的玻璃隔断墙系列产品生产商;公司主营:玻璃隔断,活动隔断,玻璃隔断墙,隔断墙,隔墙,办公室玻璃隔断墙,办公玻璃隔断,高隔间,淋浴房,肯德基门,电动感应门,门禁门控系统及玻璃隔断铝合金型材、配件等系列产品;山东聚美玻璃隔断,隔断墙厂家.

丁威特

丁威特-高端车载电子领航者

萍乡市石化填料有限责任公司

萍乡市石化填料有限责任公司位于中国工业陶瓷之都――湘东区陶瓷工业园。拥有固定资产3800万元,可生产各种材质的化工填料、瓷球、分子筛、环保过滤材料、催化剂、石化助剂、活性炭、化工设备配件等,所有产品由国家非金属材料和设备质量监测中心检验认证。

期货入门网

专业期货开户和期货培训学习网站,期货开户即送期货特色指标!提供免费期货入门视频教程,期货高手实战期货投资技巧,是期货交易投资者必看的网站!

豪迈旅游网

豪迈旅游网(www.youwan55.com),在我们的网站上,您将找到全球各地的目的地信息、旅行指南、精选酒店、机票预订、旅行活动和文化体验。我们的专业团队定期更新旅行信息,确保您能够获得最新、最准确的旅行建议。我们的使命是让旅行变得更加便捷、愉快和难忘。感谢您选择我们的旅游网站,让我们一同探索世界各地的奇妙之旅,留下宝贵的回忆。

随机文章