Flink Scala Shell是尝试Flink的一种方便快捷的方法。您也可以在scala shell中使用hive,而不是在pom文件中指定hive依赖项,而是打包您的程序并通过flink run命令提交它。为了在scala shell中使用hive连接器,您需要将以下hive连接器依赖项放在flink dist的lib文件夹下。
- flink-connector-hive_{scala_version}-{flink.version}.jar
- flink-hadoop-compatibility_{scala_version}-{flink.version}.jar
- flink-shaded-hadoop-2-uber-{hadoop.version}-{flink-shaded.version}.jar
- hive-exec-2.x.jar (for Hive 1.x, you need to copy hive-exec-1.x.jar, hive-metastore-1.x.jar, libfb303-0.9.2.jar and libthrift-0.9.2.jar)
版本信息详见:Flink Table API & SQL - Hive之hive概览
Flink 与 Scala 的交互方式详见:Flink部署和操作 之 Scala解释器
然后你可以在scala shell中使用hive连接器,如下所示:
Scala-Flink> import org.apache.flink.table.catalog.hive.HiveCatalog
Scala-Flink> val hiveCatalog = new HiveCatalog("hive", "default", "<Replace it with HIVE_CONF_DIR>", "2.3.4");
Scala-Flink> btenv.registerCatalog("hive", hiveCatalog)
Scala-Flink> btenv.useCatalog("hive")
Scala-Flink> btenv.listTables
Scala-Flink> btenv.sqlQuery("<sql query>").toDataSet[Row].print()