从配置单元查询导入

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

本文介绍如何使用 机器学习 Studio (经典) 中的导入数据模块从 Hadoop 群集和 HDInsight 分布式存储获取数据。

注意

仅适用于机器学习 Studio (经典)

可在 Azure 机器学习设计器中获取类似的拖放模块。

从 Hive 导入数据对于加载大型数据集特别有用,或者如果要在将数据加载到机器学习试验之前使用MapReduce作业预处理数据。

重要

截至 2018 年 7 月 31 日,Microsoft Azure HDInsight 版本 3.3 是Windows版 HDInsight 的最后一个版本。 如果Windows 3.3 或更高版本上有任何 HDInsight 群集,则必须迁移到 Linux (HDInsight 3.5 或更高版本的 HDInsight) 。 有关已停用的 HDInsight 版本的详细信息,请参阅“ 已停用的版本 ”部分。 机器学习 Studio (经典) 在某些方案中将支持 Linux 上的 HDInsight

对 Linux 上的 HDInsight 的支持

机器学习 Studio (经典) 在以下情况下支持 Linux 上的 HDInsight:

  • Hadoop 2.7.3 (HDI 3.6) Blob 默认为 ADLS 辅助数据库
  • Spark 2.1.0 (HDI 3.6) Blob 默认为 ADLS 辅助数据库
  • Spark 2.2.0 (HDI 3.6) Blob 默认为 ADLS 辅助数据库
  • Spark 2.3.0 (HDI 3.6) Blob 默认为 ADLS 辅助数据库

已知问题

在 Linux 上将 Hive 查询的导入数据模块与 HDInsight 配合使用时存在几个已知问题:

如何从 Hive 查询导入数据

使用向导

该模块新增了一个向导,可帮助你选择存储选项、从现有订阅和帐户中进行选择,并快速配置所有选项。

  1. 导入数据 模块添加到试验中。 可以在“ 数据输入和输出 ”类别的 Studio (经典) 中找到模块。

  2. 单击“ 启动导入数据向导 ”,然后按照提示进行操作。

  3. 配置完成后,若要实际将数据复制到试验中,请右键单击该模块,然后选择“ 运行选定”。

如果需要编辑现有数据连接,向导将加载所有以前的配置详细信息,以便无需从头开始

手动设置导入属性

以下步骤介绍如何手动配置导入源。

  1. 导入数据 模块添加到试验中。 可以在“ 数据输入和输出 ”类别的 Studio (经典) 中找到模块。

  2. 对于 数据源,请选择 “Hive 查询”。

  3. Hive 数据库查询 文本框中,指定要使用 HiveQL 读取的数据。

    HiveQL 是一种类似于SQL的查询语言,在将数据添加到 机器学习 Studio (经典) 之前,还可以用于聚合数据和执行数据筛选。 但是,Hive 查询必须以表格格式返回数据。

    例如,此语句是有效的 Hive 查询:

    SELECT <column list> FROM table WHERE <expression>;

  4. 单击 HCatalog 服务器 URI 文本框,然后键入群集的完全限定名称。

    例如,如果创建了名为 mycluster001 的群集,请使用以下格式: https://mycluster001.azurehdinsight.net

  5. 单击 Hadoop 用户帐户名称 文本框,并粘贴预配群集时使用的 Hadoop 用户帐户。

  6. 单击 Hadoop 用户帐户密码 文本框,并键入预配群集时使用的凭据。

    有关 Hadoop 的群集命名和身份验证的详细信息,请参阅 HDInsight 中的预配 Hadoop 群集

  7. 对于 输出数据的位置,请选择指示数据存储位置的选项。 如果数据位于 Hadoop 分布式文件系统中 (HDFS) ,则必须通过刚输入的同一帐户和密码进行访问。 如果数据位于 Azure 中,请提供存储帐户的位置和凭据。

    • HDFS:键入或粘贴 HDFS 服务器 URI。 请务必使用 没有 前缀的 HTTPS:// HDInsight 群集名称。

    • Azure:对于 Azure 存储帐户名称,请键入 Azure 帐户的名称。 例如,如果存储帐户 https://myshared.blob.core.windows.net的完整 URL 为,则键入 myshared

    • Azure 存储密钥:复制并粘贴用于访问存储帐户的密钥。

    • 对于 Azure 容器名称,请为群集指定 默认容器 。 有关确定要使用的容器的帮助,请参阅使用技巧部分。

  8. 如果不希望数据更改太多,或者希望避免每次运行试验时重新加载数据,请选择 “使用缓存结果 ”选项。

    选择此选项后,如果没有对模块参数的其他更改,试验会在首次运行模块时加载数据,然后使用数据集的缓存版本。

    如果要在试验数据集的每个迭代中重新加载数据集,请取消选择 “使用缓存的结果 ”选项。 如果对 导入数据的参数进行了更改,结果也会重新加载。

  9. 运行试验。

结果

完成后,单击输出数据集并选择 “可视化 ”以查看数据是否已成功导入。

如果收到错误,请检查数据中是否存在缺失值、其他空列或不兼容的数据类型。

示例

有关如何在机器学习试验中配置 HDInsight 群集和使用 Hive 查询的示例,请参阅以下资源:

尽管 Hive 为多种数据清理和预处理提供了卓越的功能,但在导入后,你可能会发现这些工具可用于准备数据进行建模:

  • 使用 “编辑元数据 ”和其他模块更改列名称,指定哪些列包含标签和特征,并指定列数据类型。 有关示例,请参阅 数据集处理

  • 使用 Python 处理后的文本数据,删除标点符号、标记语音部分等。 有关示例,请参阅 文本分类

  • 将来自不同源的多个表合并到一个训练数据表中。 有关示例,请参阅 预测性维护

技术说明

本部分包含实现详情、使用技巧和常见问题解答。

如何确定默认容器

如果通过接受所有默认值创建了群集,则创建群集时与群集同名的容器。 该容器是群集的默认容器。 但是,如果在创建群集时选择了 CUSTOM CREATE 选项,系统会提供两个选项来选择默认容器。 第一个选项是选择现有容器。 执行此操作时,该容器将成为群集的默认存储容器。 第二个选项是 创建默认容器。 使用此选项时,默认容器的名称与群集相同。

如何从 Hive 查询调用 Python 脚本

可以使用 导入数据 模块来运行调用 Python UDF 来处理记录的 Hive 查询。

有关详细信息,请参阅 在 HDInsight 中将 Python 与 Hive 和 Pig 配合使用

使用 Hive 预处理数据时避免内存不足问题

使用 Hive 查询从大型数据源中提取记录时,Hadoop 群集的默认配置有时太有限而无法支持 MapReduce 作业的运行。 例如,在这些 HDInsight 发行说明 中,默认设置定义为四节点群集。

如果MapReduce作业的要求超过可用容量,Hive 查询可能会返回内存不足错误消息,这会导致导入数据操作失败。 如果发生这种情况,可以在 导入数据 模块中更改 Hive 查询的默认内存分配,如下所示:

Increase memory to maximum allowed on cluster

在此示例中,使用了命令 set mapreduce.map.memory.mbset mapreduce.reduce.memory.mb 将内存量增加到群集中允许的最大内存量。

常见问题

如何避免不必要的重新加载相同的数据

如果源数据发生更改,可以通过重新运行 导入数据来刷新数据集并添加新数据。 但是,如果每次运行试验时都不想从源重新读取,请选择“ 使用缓存的结果 ”选项为 TRUE。 如果此选项设置为 TRUE,则模块将检查试验是否以前使用相同的源和相同的输入选项运行,如果找到以前的运行,则使用缓存中的数据,而不是从源重新加载数据。

是否可以在从源读取数据时对其进行筛选

导入数据模块本身不支持在读取数据时进行筛选。

若要在将数据读取到 机器学习 Studio (经典) 之前对其进行筛选,请使用 Hive 查询或MapReduce作业聚合和转换数据。

在将数据加载到 机器学习 Studio (经典) 后,还有多个用于筛选数据的选项:

  • 使用自定义 R 脚本仅获取所需的数据。
  • 拆分数据 模块与相对表达式或正则表达式配合使用来隔离所需的数据,然后将其另存为数据集。

注意

如果你发现加载的数据多于所需数据,可以通过读取新数据集、使用与较早的更大数据相同的名称对其进行保存来覆盖缓存的数据集。

模块参数

名称 范围 类型 默认 说明
数据源 列出 数据源或接收器 Azure Blob 存储 数据源可以是 HTTP、FTP、匿名 HTTPS 或 FTPS、Azure BLOB 存储中的文件、Azure 表、Azure SQL 数据库、本地SQL Server数据库、Hive 表或 OData 终结点。
Hive 数据库查询 any StreamReader HQL 查询
HCatalog 服务器 URI any String Templeton 终结点
Hadoop 用户帐户名 any String Hadoop HDFS/HDInsight 用户名
Hadoop 用户帐户密码 any SecureString Hadoop HDFS/HDInsight 密码
输出数据的位置 any DataLocation HDFS 为 outputDir 指定 HDFS 或 Azure
HDFS 服务器 URI any String HDFS rest 终结点
Azure 存储帐户名称 any String Azure 存储帐户名称
Azure 存储密钥 any SecureString Azure 存储密钥
Azure 容器名称 any String Azure 容器名称
数据内容类型 列表(子集) URL 内容 OData 数据格式类型
来源 URL any String Power Query数据源的 URL
使用缓存结果 TRUE/FALSE Boolean FALSE description

Outputs

名称 类型 说明
结果数据集 数据表 包含已下载数据的数据集

例外

异常 描述
错误 0027 如果两个对象必须具有相同的大小,但其大小却不相同,则会发生异常。
错误 0003 如果一个或多个输入为 null 或为空,则会发生异常。
错误 0029 如果传递的 URI 无效,则会发生异常。
错误 0030 在无法下载文件时发生异常。
错误 0002 如果一个或多个参数无法分析或者无法从指定的类型转换成目标方法所需的类型,则会发生异常。
错误 0009 如果错误地指定了 Azure 存储帐户名或容器名,则会发生异常。
错误 0048 如果无法打开文件,则会发生异常。
错误 0015 如果数据库连接失败,则会发生异常。
错误 0046 如果无法在指定的路径中创建目录,则会发生异常。
错误 0049 如果无法分析文件,则会发生异常。

有关特定于 Studio (经典) 模块的错误列表,请参阅机器学习错误代码

有关 API 异常的列表,请参阅 机器学习 REST API 错误代码

另请参阅

导入数据
导出数据
通过 HTTP 从 Web URL 导入
从 Azure SQL 数据库导入
从 Azure 表导入
从 Azure Blob 存储导入
从数据馈送提供程序导入
从本地 SQL Server 数据库导入