我们处理的数据主要存储在文件系统和数据库中。本书的第3章将专门介绍文件系统,第4章会详细介绍与数据库、数据表相关的操作。Alink采用插件的方式来管理各种文件系统、数据库以及各个版本所需的函数库。本节还会专门介绍如何利用Alink的插件(Plugin)工具自动下载相关的函数库。
下图为Alink文件系统(File System)与数据库(Catalog)的架构图,具体说明如下:

Alink能够支持不同第三方库(例如OSS、Hive、Derby、MySQL等)的不同版本(例如Hive的2.3.4版本、2.3.6版本等)。为了更好地管理插件(外部的第三方库),我们提供了插件下载器(PluginDownloader)来管理不同插件的多个版本。
插件下载器封装了插件的常见功能,如下所示:
在Python代码中可以这样使用插件下载器:
# 初始化 PyAlink
from pyalink.alink import *
useLocalEnv(1)
# 设置插件下载的位置。当路径不存在时,会自行创建路径
AlinkGlobalConfiguration.setPluginDir("/Users/xxx/alink_plugins/")
# 获得Alink插件下载器
pluginDownloader = AlinkGlobalConfiguration.getPluginDownloader()
# 从远程加载插件的配置项
pluginDownloader.loadConfig()
# 展示所有可用的插件名称
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()