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": {
...