flink 本地调试连接远程hive-java-scala两个版本的

本文介绍了如何在项目中使用Apache Flink 1.14.0和Blink 1.13.6版本进行表处理,包括依赖配置和Scala API示例。重点展示了如何设置Hive Catalog和执行SQL查询。
摘要由CSDN通过智能技术生成

flink 1.14.0

planner 1.14.0

blink 1.13.6

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.cell</groupId>
    <artifactId>FlinktTest</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <properties>
        <blink.flink.version>1.13.6</blink.flink.version>
        <flink.version>1.14.0</flink.version>
        <scala.binary.version>2.12</scala.binary.version>
    </properties>

    <dependencies>
        <!-- Flink modules  start -->

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-scala_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
            <!--<scope>provided</scope>-->
            <exclusions>
                <exclusion>
                    <artifactId>scala-library</artifactId>
                    <groupId>org.scala-lang</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--<dependency>-->
        <!--<groupId>org.apache.flink</groupId>-->
        <!--<artifactId>flink-avro</artifactId>-->
        <!--<version>${flink.version}</version>-->
        <!--<exclusions>-->
        <!--<exclusion>-->
        <!--<artifactId>slf4j-api</artifactId>-->
        <!--<groupId>org.slf4j</groupId>-->
        <!--</exclusion>-->
        <!--<exclusion>-->
        <!--<artifactId>commons-compress</artifactId>-->
        <!--<groupId>org.apache.commons</groupId>-->
        <!--</exclusion>-->
        <!--</exclusions>-->
        <!--</dependency>-->

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-scala_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
            <!--<scope>provided</scope>-->
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-common</artifactId>
            <version>${flink.version}</version>
            <!--<scope>provided</scope>-->
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-api-scala_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
            <!--<scope>provided</scope>-->
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-api-java-bridge_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
            <!--<scope>provided</scope>-->
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-api-scala-bridge_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
            <!--<scope>provided</scope>-->
        </dependency>

        <!--<dependency>-->
        <!--<groupId>org.apache.flink</groupId>-->
        <!--<artifactId>flink-table-planner-blink_${scala.binary.version}</artifactId>-->
        <!--<version>${blink.flink.version}</version>-->
        <!--&lt;!&ndash;<scope>provided</scope>&ndash;&gt;-->
        <!--<exclusions>-->
        <!--<exclusion>-->
        <!--<artifactId>slf4j-api</artifactId>-->
        <!--<groupId>org.slf4j</groupId>-->
        <!--</exclusion>-->
        <!--</exclusions>-->
        <!--</dependency>-->

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-planner_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
            <!--<scope>provided</scope>-->
        </dependency>


        <!--<dependency>-->
        <!--<groupId>org.apache.flink</groupId>-->
        <!--<artifactId>flink-streaming-java_${scala.binary.version}</artifactId>-->
        <!--<version>${flink.version}</version>-->
        <!--&lt;!&ndash;<scope>provided</scope>&ndash;&gt;-->
        <!--<exclusions>-->
        <!--<exclusion>-->
        <!--<artifactId>commons-cli</artifactId>-->
        <!--<groupId>commons-cli</groupId>-->
        <!--</exclusion>-->
        <!--<exclusion>-->
        <!--<artifactId>slf4j-api</artifactId>-->
        <!--<groupId>org.slf4j</groupId>-->
        <!--</exclusion>-->
        <!--<exclusion>-->
        <!--<artifactId>scala-parser-combinators_2.12</artifactId>-->
        <!--<groupId>org.scala-lang.modules</groupId>-->
        <!--</exclusion>-->
        <!--</exclusions>-->
        <!--</dependency>-->

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
            <!--<scope>provided</scope>-->
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
                <exclusion>
                    <groupId>log4j</groupId>
                    <artifactId>log4j</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-json</artifactId>
            <version>${flink.version}</version>
            <!--<scope>provided</scope>-->
        </dependency>


        <!-- rocksdb-->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-statebackend-rocksdb_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
            <!--<scope>provided</scope>-->
        </dependency>

        <!-- Hive Connector的支持,仅在编译时生效-->
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-connector-hive_${scala.binary.version}</artifactId>
            <version>${flink.version}</version>
            <!--<scope>provided</scope>-->
        </dependency>

        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-exec</artifactId>
            <version>2.1.1</version>
            <!--<scope>provided</scope>-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.calcite</groupId>
                    <artifactId>calcite-core</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.calcite</groupId>
                    <artifactId>calcite-avatica</artifactId>
                </exclusion>
                <exclusion>
                    <artifactId>hadoop-hdfs</artifactId>
                    <groupId>org.apache.hadoop</groupId>
                </exclusion>
            </exclusions>
        </dependency>


        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-json</artifactId>
            <version>1.14.0</version>
        </dependency>
        <!-- Flink modules  end -->


        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-core</artifactId>
            <version>2.7.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>2.7.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-common</artifactId>
            <version>2.7.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
            <version>2.7.2</version>
        </dependency>


    </dependencies>


</project>

java 

package com.cell.flink.java;

import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.SqlDialect;
import org.apache.flink.table.api.TableEnvironment;
import org.apache.flink.table.catalog.hive.HiveCatalog;

public class Demo {


    public static void main(String[] args) {


        EnvironmentSettings settings = EnvironmentSettings.newInstance().inStreamingMode().build();

        TableEnvironment tableEnv = TableEnvironment.create(settings);

        String hiveConfDir = Thread.currentThread().getContextClassLoader().getResource("").getPath();

        System.out.println("hiveConfDir=" + hiveConfDir);

        tableEnv.getConfig().setSqlDialect(SqlDialect.HIVE);
        HiveCatalog hive = new HiveCatalog("my_hive","test002",hiveConfDir);
        tableEnv.registerCatalog("my_hive",hive);


        tableEnv.useCatalog("my_hive");
        tableEnv.useDatabase("test002");

        tableEnv.executeSql("show tables").print();



    }
}

scala

package com.cell.flink

import org.apache.flink.streaming.api.scala._
import org.apache.flink.table.api.bridge.scala.StreamTableEnvironment
import org.apache.flink.table.api.{EnvironmentSettings, TableEnvironment}
import org.apache.flink.table.catalog.hive.HiveCatalog
import org.apache.flink.table.module.hive.HiveModule


object Test {


  def main(args: Array[String]): Unit = {

    val env = StreamExecutionEnvironment.getExecutionEnvironment
    env.setParallelism(1)
    val tableEnv = StreamTableEnvironment.create(env)

//    val settings = EnvironmentSettings.newInstance()
//      .inStreamingMode()
//      .build()
//    val settings = EnvironmentSettings.inStreamingMode()
//    val tableEnv = TableEnvironment.create(settings)

    val hiveConfDir = Thread.currentThread().getContextClassLoader().getResource("").getPath()
//    println(hiveConfDir)

    val myHive = new HiveCatalog("my_hive","test002",hiveConfDir)
    tableEnv.registerCatalog("my_hive",myHive)
    tableEnv.useCatalog("my_hive")
    tableEnv.useDatabase("test002")
    tableEnv.executeSql(
      """
        |show tables
      """.stripMargin).print()

    tableEnv.listTables()











  }

}

效果

 

### 回答1: flink-1.15.0-bin-scala_2.12.tgz是一个存储在tgz压缩文件中的Flink软件包。这个软件包是用Scala程序语言编写的,适用于Scala版本2.12。Flink是一个开源的流处理和批处理框架,它提供了丰富的功能和工具来处理大规模的数据。它可以轻松地将数据流和批处理作业整合到一个统一的环境中,使得数据处理更加高效和方便。 这个软件包包含了Flink框架的二进制代码和库文件,以及一些示例程序和配置文件。通过下载和解压这个包,用户可以快速构建和部署自己的Flink应用程序。在解压后的目录中,用户可以找到各种可执行脚本和命令,用于启动和管理Flink集群,提交作业,监控应用程序等。 Flink框架具有可扩展性和容错性,它可以在各种规模的集群上运行,并处理大量的数据。它支持各种数据源和数据格式,可以与其他开源框架(如Hadoop、Hive等)无缝集成。此外,Flink还提供了一些高级功能,如事件时间处理、状态管理、窗口操作等,以帮助用户更好地统一处理有状态的流数据。 总之,flink-1.15.0-bin-scala_2.12.tgz是一个方便用户下载和使用Flink框架的软件包。它提供了一套强大的功能,可以帮助开发人员快速构建和部署流处理和批处理应用程序,并提供高效,可靠的数据处理能力。 ### 回答2: flink-1.15.0-bin-scala_2.12.tgz 是Apache Flink的一个发布版本。Apache Flink是一个开源的分布式流处理和批处理框架,用于在大规模数据集上进行快速、可靠和可扩展的数据处理。 "flink-1.15.0-bin-scala_2.12.tgz"是一个压缩文件,其中包含了可执行的二进制文件和相关的依赖,用于在Scala编程语言下运行Flink。_2.12表示该发布版本适用于Scala 2.12版本。 在这个压缩文件中,您可以找到Flink的核心组件和库,如jobmanager和taskmanager。它还包含用于批处理和流处理的API和库。您可以使用这些API和库来编写和执行各种数据处理任务,包括数据转换、聚合、窗口操作、有状态计算等。 要使用flink-1.15.0-bin-scala_2.12.tgz,您需要首先解压缩文件。然后,您可以使用命令行或编程方式启动Flink集群,并提交您编写的作业。Flink将根据您的作业配置和数据流程自动进行任务调度和执行。 通过使用flink-1.15.0-bin-scala_2.12.tgz,您可以利用Flink的高性能、低延迟和高可靠性的特点来处理大规模的数据集。无论是数据流处理还是批处理,Flink都提供了强大而灵活的工具和库来满足不同的数据处理需求。 ### 回答3: flink-1.15.0-bin-scala_2.12.tgz是一个Apache Flink的软件包。Apache Flink是一个针对分布式流处理和批处理的开源框架。它提供了高效、可靠的数据处理能力,支持大规模数据处理和实时分析。 版本号1.15.0表示这个软件包是Flink的1.15.0版本。每个版本Flink都会引入新的功能和修复之前版本中的bug,因此使用最新版本可以获得最优化的性能和最稳定的稳定性。 "bin-scala_2.12"说明这个软件包是为Scala编程语言编译的。Scala是一种功能强大的静态类型编程语言,它与Java紧密集成并在编写分布式应用程序时特别有效。 ".tgz"表示这个文件是一个压缩文件,常用于在Unix或Linux系统上分发安装软件。您可以使用解压缩工具,如tar命令,将其解压缩。 要安装flink-1.15.0-bin-scala_2.12.tgz,您可以按照以下步骤进行操作: 1. 下载flink-1.15.0-bin-scala_2.12.tgz文件到你的计算机上。 2. 打开终端或命令提示符,并导航到存储下载文件的目录。 3. 使用tar命令解压缩文件,例如运行命令:tar -xzf flink-1.15.0-bin-scala_2.12.tgz。 4. 解压缩后,您将在当前目录下看到一个名为"flink-1.15.0"的文件夹。这个文件夹里包含了Flink的所有二进制文件和配置文件。 5. 配置Flink集群和作业管理器,具体操作可参考官方文档。 6. 开始使用Flink来开发和运行分布式流处理和批处理应用程序。 总之,flink-1.15.0-bin-scala_2.12.tgz是Flink 1.15.0版本的二进制Scala软件包,可以用于构建和运行分布式流处理和批处理应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值