资讯专栏INFORMATION COLUMN

如何在EsgynDB中使用机器学习库(ML library)

LeoHsiun / 814人阅读

摘要:简单的集成和有多种方法连接机器学习库和。用户在他们选择的系统上运行机器学习代码并通过读取数据。许多机器学习库都内置支持以逗号分隔或以其他方式分隔格式读取和写入。

机器学习(ML)库正变得越来越流行,现在有各种各样的这类库 - 维基百科中提及了49个[1]。 这些机器学习库需要庞大的数据,通常此类数据是存储在关系型数据库中的业务数据,比如存放在EsgynDB或以其他形式存储在Hadoop数据湖中。

备注:EsgynDB为易鲸捷公司基于Trafodion提供的企业版。

简单的集成 - JDBC和HDFS

有多种方法连接机器学习库和EsgynDB。 其中一种方法是使用JDBC,这是大多数软件包支持的方法。 用户在他们选择的系统上运行机器学习代码并通过JDBC读取数据。 如果要传输大量数据,可以通过多个并行连接读取。 某些系统可以通过将SQL查询拆分为多个实例来解决此问题。 例如,Spark jdbcRDD [2]允许查询的参数化,再结合salted EsgynDB表能更高效的工作:

select *
from sales s join customer c on s.cust_id = c.cust_id
where s.”_SALT_” between ? and ?.

Apache Spark将使用non-overlapping值范围启动此查询的多个实例。

相反地从机器学习库到EsgynDB的结果集数据,通常可将数据导出到HDFS的Hive表来完成,然后由EsgynDB读取此Hive表。

在EsgynDB集群上的并行机器学习实例

在这篇博客中,我们重点关注另一种集成方法,即在EsgynDB集群上并行运行机器学习库程序,将EsgynDB中数据作为输入并同时在EsgynDB中处理结果。 对于不同的机器学习库,该方法是通用的,它类似于MapReduce,机器学习程序被构造成多个类似于mapper或reducer的模块。

三大处理模块

为了创建这样的设置,我们结合了三大处理模块:

首先,机器学习程序将data frame作为输入并产生data frame作为输出。 该程序编写类似MapReduce中的mapper或reducer,所以以上程序的多个实例可以并行运行,而无需在实例之间交换状态信息。 例如,程序可以对逻辑上独立的数据运行聚类算法。

Data frame[3] [4]是几个ML包中涉及的概念,它大致相当于SQL中的一个表。 Data frame由指定数据类型的命名列组成。 因为每列具有相同数量的元素,它们可以组成多个行。

第二个模块是由Esgyn为Apache Trafodion [5] [6]提供的用户定义的表值函数(TMUDF),它把机器学习程序与EsgynDB集成到一起。 以文本形式将所需数据提供给机器学习程序的标准输入,并以文本形式接收该程序的输出结果。 许多机器学习库都内置支持以逗号分隔(或以其他方式分隔)格式读取和写入data frame。

最后,我们添加一个驱动查询(driving query)来完整机器学习场景。 该驱动查询产生机器学习程序所需的数据,调用用户定义函数(UDF),并以用户期望的方式处理UDF的结果。 当机器学习程序像reducer一样工作时,驱动查询还定义了如何进行数据分区。 如果机器学习库不支持可横向扩展集群(例如R),这可以让您在更大的数据集上并行地运行算法。

例子:TensorFlow神经网络

以Google TensorFlow [7]中识别手写数字作为神经网络示例,我们在一台多带带的机器上训练这个神经网络,然后将它部署到EsgynDB,我们用EsgynDB来并行读取数字。 此示例的驱动SQL查询如下:

集成的UDF称之为“filterprog”,它的调用用红色标注。蓝色部分为输入数据,向量化图像。查询返回图像编号并读取数字作为结果。

TensorFlow程序从标准输入读取图像编号和图像数据,执行图像识别,然后将读取的数字和图像编号打印到标准输出,由EsgynDB读取它们。 EsgynDB优化器根据需要可并行化查询。

请注意该操作可以集成更复杂的SQL查询,比如在机器学习代码之前和之后执行join,union,聚合等操作,并且 多个机器学习步骤可以合并成单个的驱动查询。

参考文献:

[1] Wikipedia Machine Learning:
https://en.wikipedia.org/wiki...
[2] Spark JDBC RDD: https://spark.apache.org/docs...
[3] Data Frames in R:
http://www.r-tutor.com/r-intr...
[4] Data Frames in Spark:
https://spark.apache.org/docs...
[5] Trafodion Table-valued UDFs: https://cwiki.apache.org/conf...
[6] Integrating UDF (FilterProg): https://cwiki.apache.org/conf...
[7] Google TensorFlow MNIST example: https://www.tensorflow.org/ve...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/8473.html

相关文章

  • 如何EsgynDB使用机器学习ML library

    摘要:简单的集成和有多种方法连接机器学习库和。用户在他们选择的系统上运行机器学习代码并通过读取数据。许多机器学习库都内置支持以逗号分隔或以其他方式分隔格式读取和写入。 机器学习(ML)库正变得越来越流行,现在有各种各样的这类库 - 维基百科中提及了49个[1]。 这些机器学习库需要庞大的数据,通常此类数据是存储在关系型数据库中的业务数据,比如存放在EsgynDB或以其他形式存储在Hadoop...

    seanHai 评论0 收藏0
  • 机器学习(一):入门

    摘要:最后会介绍机器学习方向合适的一些可视化工具。现在就让我们进入机器学习的世界吧这一节主要进行机器学习的入门。机器学习的目的就是需要通过独立变量来预测非独立变量。机器学习或者说数据科学中很重要的一点就是建立度量,指标。 这是一个机器学习的系列,偏数据分析方向,未来或许会写一些偏人工智能方向的机器学习的文章。这个系列将会详细介绍常用的机器学习模型和算法,像是线性回归和分类算法。最后会介绍机器...

    William_Sang 评论0 收藏0
  • 微软开源 ML.NET:一款跨平台、成熟的机器学习框架

    摘要:微软在大会上兴奋地宣布了的预览版,这是一种跨平台的开源机器学习框架。核心组件作为的一部分而发布今天的代码仓库包含用于模型训练和使用的,以及许多常见的机器学习任务如回归和分类所需要的各种转换和学习器。 微软在Build 2018大会上兴奋地宣布了ML.NET的预览版,这是一种跨平台的开源机器学习框架。ML.NET将让广大.NET开发人员可以开发自己的模型,并且将自定义的机器学习融入到其应用程序...

    linkin 评论0 收藏0
  • 谈谈机器学习与传统编程之间的区别

    摘要:机器学习也是这个大筐中的一个组成部分。我们目前的发展阶段是机器学习正处在第二级和第三级交界处。机器学习工程师的职位是怎样的机器学习工程师的位置更具有技术性。换句话说,机器学习工程师与传统的软件工程有着比数据科学更多的相同点。 翻译:疯狂的技术宅https://towardsdatascience.co... showImg(https://segmentfault.com/img/b...

    王岩威 评论0 收藏0
  • 谈谈机器学习与传统编程之间的区别

    摘要:机器学习也是这个大筐中的一个组成部分。我们目前的发展阶段是机器学习正处在第二级和第三级交界处。机器学习工程师的职位是怎样的机器学习工程师的位置更具有技术性。换句话说,机器学习工程师与传统的软件工程有着比数据科学更多的相同点。 翻译:疯狂的技术宅https://towardsdatascience.co... showImg(https://segmentfault.com/img/b...

    Awbeci 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<