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 connector phoenix -> 正文阅读

[大数据]flink connector phoenix

参考:https://github.com/lixz3321/flink-connector-jdbc-ext

下载:flink-release-1.13.2 源码
进入flink-connectors module 子module flink-connector-jdbc,添加 PhoenixDialect.java ,PhoenixRowConverter.java,修改 JdbcDialects.java

mvn clean package -DskipTests -Dfast -Dra
t.skip=true

在这里插入图片描述

在这里插入图片描述
替代 flink-connector-jdbc

<!-- <dependency>
   <groupId>org.apache.flink</groupId>
   <artifactId>flink-connector-jdbc_2.11</artifactId>
   <version>1.13.2</version>
</dependency> -->

<dependency>
   <groupId>org.apache.flink</groupId>
   <artifactId>flink-connector-jdbc-ext</artifactId>
   <version>1.13.2</version>
</dependency>
PostgresDialect.java

org.apache.flink.connector.jdbc.dialect.PhoenixDialect

public class PhoenixDialect extends AbstractDialect{
    @Override
    public int maxDecimalPrecision() {
        return 0;
    }

    @Override
    public int minDecimalPrecision() {
        return 0;
    }

    @Override
    public int maxTimestampPrecision() {
        return 0;
    }

    @Override
    public int minTimestampPrecision() {
        return 0;
    }

    @Override
    public List<LogicalTypeRoot> unsupportedTypes() {
        return null;
    }

    @Override
    public String dialectName() {
        return "Phoenix";
    }

    @Override
    public boolean canHandle(String url) {
        return url.startsWith("jdbc:phoenix:");
    }

    @Override
    public JdbcRowConverter getRowConverter(RowType rowType) {
        return new PhoenixRowConverter(rowType);
    }

    @Override
    public String getLimitClause(long limit) {
        return null;
    }

    @Override
    public Optional<String> defaultDriverName() {
        return Optional.of("org.apache.phoenix.jdbc.PhoenixDriver");
    }

    @Override
    public String quoteIdentifier(String identifier) {
        return "\"" + identifier + "\"";
    }

    @Override
    public String getInsertIntoStatement(String tableName, String[] fieldNames) {
        String columns =
            Arrays.stream(fieldNames)
                .map(this::quoteIdentifier)
                .collect(Collectors.joining(", "));
        String placeholders =
            Arrays.stream(fieldNames).map(f -> ":" + f).collect(Collectors.joining(", "));
        return "UPSERT INTO "
            + quoteIdentifier(tableName)
            + "("
            + columns
            + ")"
            + " VALUES ("
            + placeholders
            + ")";
    }
}
PhoenixRowConverter.java

org.apache.flink.connector.jdbc.internal.converter.PhoenixRowConverter

public class PhoenixRowConverter extends AbstractJdbcRowConverter{

    public PhoenixRowConverter(RowType rowType) {
        super(rowType);
    }

    @Override
    public String converterName() {
        return "Phoenix";
    }
}

JdbcDialects.java

org.apache.flink.connector.jdbc.dialect.JdbcDialects

private static final List<JdbcDialect> DIALECTS =
            Arrays.asList(
                    new DerbyDialect(),
                    new MySQLDialect(),
                    new PostgresDialect(),
                    // 添加 phoenix 语义
                    new PhoenixDialect());

======

		StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        EnvironmentSettings bsSettings = EnvironmentSettings.newInstance().useBlinkPlanner().inStreamingMode().build();
        StreamTableEnvironment tEnv = StreamTableEnvironment.create(env, bsSettings);
        System.out.println("tEnv--> " + tEnv);
        //加载clickhouse表
        tEnv.executeSql("create table test4(" +
                "`GOODS_ID` STRING," +
                "`ISWHITE` STRING," +
                "`DATA_DATE` STRING" +
                ")WITH(" +
                "'connector' = 'jdbc'," +
                "'url' = 'jdbc:phoenix:172.16.34.121:2181'," +
                "'table-name' = 'WHO_GOODS_LABEL'" +
                ")");
        tEnv.executeSql("select * from test4").print();

在这里插入图片描述

值得注意的是如下图 aaa / ccc 未在上图显示,因为是在 hbase shell 直接添加的、未查询的到…
在这里插入图片描述

注意字段大小写…

create table test4(
`goods_id` STRING,
`ISWHITE` STRING,
`DATA_DATE` STRING
)WITH(
'connector' = 'jdbc',
'url' = 'jdbc:phoenix:172.16.34.121:2181',
'table-name' = 'WHO_GOODS_LABEL'
)"

在这里插入图片描述
在这里插入图片描述

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

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