Alink能够支持不同第三方库(例如oss,hive,derby,mysql等)的不同版本(例如hive 2.3.4, 2.3.6等)。
为了更好的管理插件(外部的第三方库),我们提供了插件下载器(PluginDownloader)来管理不同插件的多个版本的工具。
本插件下载器封装了对插件常见的功能,例如:
- 枚举仓库中所有的插件; - 枚举某个插件的所有版本; - 下载某个插件的特定版本/默认版本; - 下载所有插件的默认版本; - 升级所有的插件;
注意:为了便于用户的使用,本插件下载器默认从 Alink 官方提供的仓库中下载需要的插件。
注意:Alink 的新版本中使用了更先进的插件机制:当使用了需要插件的组件、并且能正常访问外网时,会自动下载插件,不需要再使用下文介绍的 PluginDownloader
手动下载了。通常情况下,只需根据需要设置插件下载路径 AlinkGlobalConfiguration.setPluginDir
就可以了。
// 设置插件下载的位置,当路径不存在时会自行创建路径;默认为相对路径 plugins AlinkGlobalConfiguration.setPluginDir("/Users/xxx/alink_plugins/"); // 获得Alink插件下载器 // 注意:只有第一次需要下载插件,之后只需要设置插件位置(第二行),不需要再下载了 PluginDownloader pluginDownloader = AlinkGlobalConfiguration.getPluginDownloader(); // 展示所有可用的插件名称 List <String> plugins = pluginDownloader.listAvailablePlugins(); // 输出结果:[oss, hive, derby, mysql, hadoop, sqlite] // 显示第0个插件的所有版本 String pluginName = plugins.get(0); // oss List<String> availableVersions = pluginDownloader.listAvailablePluginVersions(pluginName); // 输出结果:[3.4.1] // 下载某个插件的特定版本 String pluginVersion = availableVersions.get(0); pluginDownloader.downloadPlugin(pluginName, pluginVersion); // 运行结束后,插件会被下载到"/Users/xxx/alink_plugins/"目录中 // 下载某个插件的默认版本 pluginDownloader.downloadPlugin(pluginName); // 运行结束后,插件会被下载到"/Users/xxx/alink_plugins/"目录中 // 下载配置文件中的所有插件的默认版本 pluginDownloader.downloadAll(); // 插件升级 // 在升级的过程中,会先对旧的插件进行备份,备份文件名称后缀为.old;等到插件更新完毕后,会统一删除旧的插件包 // 若插件更新中断,用户可以从.old文件恢复旧版插件 pluginDownloader.upgrade();
# 初始化 PyAlink from pyalink.alink import * useLocalEnv(1) # 设置插件下载的位置,当路径不存在时会自行创建路径;默认为 PyAlink 路径下的 lib/plugins 目录 AlinkGlobalConfiguration.setPluginDir("/Users/xxx/alink_plugins/") # 获得Alink插件下载器 # 注意:只有第一次需要下载插件,之后只需要设置插件位置(第6行),不需要再下载了 pluginDownloader = AlinkGlobalConfiguration.getPluginDownloader() # 展示所有可用的插件名称 plugins = pluginDownloader.listAvailablePlugins() print(plugins) # 输出结果:['oss', 'hive', 'derby', 'mysql', 'hadoop', 'sqlite'] # 显示第0个插件的所有版本 pluginName = plugins[0] # oss availableVersions = pluginDownloader.listAvailablePluginVersions(pluginName) print(availableVersions) # 输出结果:[3.4.1] # 下载某个插件的特定版本 pluginVersion = availableVersions[0] pluginDownloader.downloadPlugin(pluginName, pluginVersion) # 运行结束后,插件会被下载到"/Users/xxx/alink_plugins/"目录中 # 下载某个插件的默认版本 pluginDownloader.downloadPlugin(pluginName) # 运行结束后,插件会被下载到"/Users/xxx/alink_plugins/"目录中 # 下载配置文件中的所有插件的默认版本 pluginDownloader.downloadAll() # 插件升级 # 在升级的过程中,会先对旧的插件进行备份,备份文件名称后缀为.old;等到插件更新完毕后,会统一删除旧的插件包 # 若插件更新中断,用户可以从.old文件恢复旧版插件 pluginDownloader.upgrade()
... "default-version": "2.13.0-public" }, "derby": { "versions": { "10.6.1.0": [ ".version", "alink_connector_jdbc_derby_flink-1.13_2.11-1.5.5.jar", "derby-10.6.1.0.jar", "flink-connector-jdbc_2.11-1.13.0.jar" ] }, "default-version": "10.6.1.0" }, "hadoop": { ...