微软-SQLServer-2012-和-Hadoop-全-

news/2025/10/27 9:07:26/文章来源:https://www.cnblogs.com/apachecn/p/19167912

微软 SQLServer 2012 和 Hadoop(全)

原文:Microsoft SQL Server 2012 with Hadoop

协议:CC BY-NC-SA 4.0

零、前言

数据管理需求已经从传统的关系型存储发展到关系型和非关系型存储,现代信息管理平台需要支持所有类型的数据。 要深入了解任何数据,您需要一个平台,该平台能够提供一套完整的跨关系、非关系和流数据的数据管理功能,同时能够将数据从一种类型无缝地移动到另一种类型,并且能够监视和管理所有数据,而不管数据或数据结构是什么类型。 Apache Hadoop 是被广泛接受的大数据工具,同样,在 RDBMS 方面,SQL Server 2012 可能是最强大的内存中动态数据存储和管理系统。 这本书使读者能够弥合 Hadoop 和 SQL Server 之间的鸿沟,换句话说,就是弥合非关系型和关系型数据管理领域之间的鸿沟。 本书特别关注 SQL Server 丰富的商业智能套件提供的数据集成和可视化解决方案,以及它们与 Apache Hadoop 和 Have 的无缝通信。

这本书涵盖了哪些内容

第 1 章,大数据和 Hadoop 简介,向读者介绍大数据和 Hadoop 世界。 本章介绍了对大数据解决方案的需求、当前的市场趋势,并使用户能够在即将发生的数据爆炸中领先一步。

第 2 章,使用 Sqoop-SQL Server Hadoop Connector介绍了基于 Sqoop 的开源 Hadoop Connector for Microsoft SQL Server。 本章介绍在 SQL Server 和 Hadoop 之间导入/导出文件的基本 Sqoop 命令。

第 3 章,使用配置单元 ODBC 驱动解释了使用开放式数据库连接(ODBC)接口从 Hadoop 和配置单元使用数据的方法。 本章介绍如何创建 SQL Server Integration Services 包,以便使用配置单元 ODBC 驱动将数据从 Hadoop 移动到 SQL Server。

第 4 章,使用 SQL Server Analysis Services创建数据模型,说明了如何使用来自 Hadoop 的数据和来自 SQL Server Analysis Services 的配置单元的数据。 读者将学习如何使用配置单元 ODBC 驱动创建从 SQL 到配置单元的链接服务器,并构建 Analysis Services 多维模型。

第 5 章,使用 Microsoft 的自助式业务智能工具向读者介绍了 SQL Server 2012 BI 套件提供的丰富的自助式 BI 工具集。 本章介绍了如何通过点击几下鼠标,快速、轻松地在 Hadoop 数据上构建强大的可视化功能。

这本书你需要什么

以下是运行本书中的示例的软件前提条件:

  • 配置了配置单元 0.9 的 Apache Hadoop 1.0 群集
  • 安装了 Integration Services 和 Analysis Services 的 SQL Server 2012
  • Microsoft Office 2013

这本书是给谁看的

本书面向已经熟悉 Hadoop 及其支持技术并愿意使用 Microsoft SQL Server 2012 Business Intelligence Suite 交叉授粉的读者。 读者将学习如何集成这两个生态系统之间的数据,以便在可视化数据的同时提供更有意义的见解。 本书还向读者介绍了 SQL Server 和 Excel 提供的自助式 BI 工具,以及如何利用它们生成强大的数据可视化,只需单击几下即可。

公约

在这本书中,你会发现许多区分不同信息的文本样式。 以下是这些风格的一些示例,并解释了它们的含义。

文本、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄中的代码字如下所示:“NoSQL存储通常比关系存储便宜得多,并且通常支持只允许追加数据的一次写入功能。”

任何命令行输入或输出都如下所示:

$bin/ sqoop import --connect "jdbc:sqlserver://<YourServerName>;username=<user>;password=<pwd>;database=Adventureworks2012" --table ErrorLog --target-dir /data/ErrorLogs –-as-textfile

新术语重要单词以粗体显示。 例如,您在屏幕、菜单或对话框中看到的文字会出现在文本中,如下所示:“首先,创建一个系统 DSN。在ODBC Data Sources Administrator中,转到系统 DSN选项卡,然后单击添加按钮,如以下屏幕截图所示。”

备注

警告或重要说明会出现在这样的框中。

提示

提示和技巧如下所示。

读者反馈

欢迎读者的反馈。 让我们知道你对这本书的看法-你喜欢什么或不喜欢什么。 读者反馈对于我们开发真正能让您获得最大收益的图书非常重要。

要向我们发送一般反馈,只需发送电子邮件至<[feedback@packtpub.com](mailto:feedback@packtpub.com)>,并通过消息主题提及书名。

如果有一个您擅长的主题,并且您有兴趣撰写或投稿一本书,请参阅我们位于www.Packtpub.com/Authors上的作者指南。

客户支持

现在您已经成为 Packt 图书的拥有者,我们有很多东西可以帮助您从购买中获得最大价值。

勘误表

虽然我们已经竭尽全力确保内容的准确性,但错误还是会发生。 如果您在我们的一本书中发现错误--可能是文本或代码中的错误--如果您能向我们报告,我们将不胜感激。 通过这样做,您可以将其他读者从挫折中解救出来,并帮助我们改进本书的后续版本。 如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的图书,单击勘误表提交链接,然后输入勘误表的详细信息。 一旦您的勘误表被核实,您提交的勘误表将被接受,勘误表将被上传到我们的网站上,或添加到该标题勘误表部分下的任何现有勘误表列表中。 通过从http://www.packtpub.com/support中选择您的书目,可以查看任何现有勘误表。

盗版

在互联网上盗版版权材料是所有媒体持续存在的问题。 在 Packt,我们非常重视版权和许可证的保护。 如果您在互联网上发现任何形式的非法复制我们的作品,请立即提供我们的位置、地址或网站名称,以便我们采取补救措施。

请拨打<[copyright@packtpub.com](mailto:copyright@packtpub.com)>与我们联系,并提供疑似盗版材料的链接。

我们感谢您在保护我们的作者方面的帮助,以及我们为您提供有价值内容的能力。

问题

如果您对本书的任何方面有任何问题,可以拨打<[questions@packtpub.com](mailto:questions@packtpub.com)>与我们联系,我们将尽最大努力解决。

一、大数据和 Hadoop 简介

突然之间,大数据成了镇上的热门话题。 从企业级到小规模初创公司,每家公司都有资金用于大数据。 存储和硬件成本在过去几年大幅降低,使企业能够存储和分析数据,而这些数据早些时候由于存储和处理挑战而被丢弃。 关于数据世界,从来没有比这更令人兴奋的时刻了。 我们看到了正在从根本上改变行业的重大趋势的汇聚,以及社交、移动、高级分析和机器学习等领域的技术创新的新纪元。 我们看到了数据的爆炸式增长,我们试图从中获得洞察力的数据有了全新的规模和范围。 在本章中,我们将深入了解什么是大数据,以及在实施大数据解决方案时 Apache Hadoop 框架是如何出现的。 通读本章后,您将能够理解:

  • 什么是大数据?为什么是现在
  • 大数据的业务需求
  • Apache Hadoop 框架

大数据-有什么大不了的?

有很多关于大数据的讨论-据估计,世界上的数字信息总量每五年增长十倍,其中 85%的数据来自新的数据类型,例如传感器、RFID、网络日志等。 这为利用这些新数据来识别新的创新机会和领域的企业提供了一个巨大的机遇。

然而,拥有一个支持数据趋势的平台只是当今挑战的一部分;您还需要让人们更容易访问它,以便他们能够获得洞察力并做出更好的决策。 如果你考虑一下用户体验,我们可以在网络上做的一切,我们通过社交媒体网站的体验,我们如何以新的方式发现、分享和协作,用户对其业务的期望,以及生产力应用也在发生变化。

我们首先要回答的问题之一是一个简单的定义:大数据与传统的大数据仓库有什么不同? 国际数据公司(International Data Corporation)拥有被最广泛接受的大数据分类理论,即将大数据归类为三个 V:

  • :数据量呈爆炸式增长。 在过去的几十年里,计算和存储容量呈指数级增长,将硬件和存储成本压低到接近零的水平,并使其成为一种商品。 当前的数据处理需求在不断发展,要求使用行业标准硬件在几分钟(如果不是几秒钟)内分析 PB 和 ZB 级的数据。
  • 品种:数据种类越来越多。 所有数据都在存储中,近 85%的新数据是非结构化数据。 数据可以是 tweet、具有可变属性的 JSON 以及用户可能想要处理的选择性元素的形式。
  • 速度:数据的速度加快了业务的步伐。 得益于新的客户交互点和技术,数据捕获几乎可以瞬间完成。 实时分析比以往任何时候都更加重要。 数据汇款比率继续远远高于数据消费率;应对数据速度仍然是一个挑战。 想一想一款软件,它可以让你以与你思考的速度一样快的速度发送信息或打字。

如今,每个组织都发现很难在自己内部管理和跟踪正确的数据集,当他们需要寻找系统外部的数据时,挑战就更大了。 典型的分析师花费太多时间从数千个来源搜索正确的数据,这会对工作效率产生不利影响。 我们将从搜索的世界过渡到发现的世界,在这个世界里,信息是根据你是谁,以及你在做什么而带给用户的。 从来没有像今天这样有如此丰富的外部可获得和有用的信息。 挑战在于,您如何发现可用的内容,以及如何与其连接?

要回答当今类型的问题,您需要新的方法来发现和探索数据。 我们这里的意思是,可能驻留在许多不同域中的数据,例如:

  • 个人数据:这是由我或我的同事创建的数据,但与手头的任务相关。
  • 组织数据:这是在整个组织中维护和管理的数据。
  • 社区数据:这是外部数据,例如共享到公共域中的经过管理的第三方数据集。 例如 Data.gov、Twitter、Facebook、等等。
  • World Data:这是全球舞台上可用的所有其他数据,例如,来自传感器或日志文件的数据,针对这些数据,出现了技术,如 Hadoop for Big Data(适用于大数据的 Hadoop)。

通过组合您需要的跨个人、公司、社区和世界数据的数据,您可以获得更深入的业务洞察力和趋势。 您可以连接和组合来自数百个可信数据提供商的数据-数据包括人口统计数据、环境数据、金融数据、零售和体育数据、社交数据(如 Twitter 和 Facebook AS)以及数据清理服务。 您可以通过自助式工具(例如 PowerPivot)将此数据与您的个人数据相结合,您可以使用参考数据通过 SQL Server 2012 清理您的公司数据,也可以在您的自定义应用中使用它。

现有的 RDBMS 解决方案(如 SQL Server)在管理具有挑战性的数据量方面做得很好,但当数据是非结构化或具有可变属性(如前面讨论的属性)的半结构化数据时,它就不够用了。 当前的世界似乎几乎沉迷于社交媒体情绪、推文、设备等等;如果没有合适的工具,你的公司将漂浮在数据的海洋中。 您需要能够释放大数据带来的新价值浪潮。 无论类型或结构如何,您都应该能够轻松地监控和管理所有数据。 这就是为什么组织倾向于为几乎所有数据构建端到端数据平台和易于使用的分析工具。 无论数据类型、位置(本地或云中)或大小如何,您都可以使用熟悉的工具和高性能技术来满足您的业务需求,从数据存储、处理一直到可视化。 大数据的优势不仅限于商业智能(BI)专家或数据科学家。 您组织中的几乎每个人都可以使用正确的工具进行分析并做出更明智的决策。

在传统业务环境中,支持报告机制的数据通常来自数据库中的表。 然而,越来越有必要用从组织外部获得的数据来补充这一点。 这可能是商业上可用的数据集,如 Windows Data Market 和其他地方提供的数据集,也可能是来自不太结构化的来源(如提要、电子邮件、日志文件等)的数据。 在大多数情况下,在将数据加载到现有数据库之前,您需要对其进行清理、验证和转换。 提取、转换和加载(ETL)操作可以使用大数据解决方案对非结构化或半结构化数据执行模式匹配、数据分类、重复数据删除和汇总操作,以生成可以导入到数据库表中的熟悉行和列格式的数据。 下图将让您对大数据有一个概念性的了解:

Big Data – what's the big deal?

大数据需要一定程度的机器学习或复杂的统计处理才能产生洞察力。 如果您必须使用非标准技术来处理和托管它,那么很可能是大数据。

大数据实现中的数据存储通常被称为NoSQL存储,尽管这在技术上并不准确,因为某些实现确实支持类似 SQL 的查询语言。 NoSQL存储通常比关系存储便宜得多,并且通常支持只允许追加数据的一次写入功能。 要更新这些存储区中的数据,您必须删除并重新创建相关文件。 此限制可最大限度地提高性能;大数据存储实施通常以吞吐量而不是容量来衡量,因为这通常是存储和查询效率的最重要因素。 此方法还提供更好的性能,并维护数据更改的历史记录。

备注

但是,非常重要的一点是,除了支持所有类型的数据外,将数据移入和移出非关系型存储(如 Hadoop)和关系型数据仓库(如 SQL Server)是大数据客户的主要使用模式之一。 在整本书中,我们将探索如何集成 Hadoop 和 SQL Server,并使用 SQL Server BI 套件实现对任何数据的强大可视化。

Apache Hadoop 框架

Hadoop 是一个开源软件框架,支持通过 Apache 开源社区提供的数据密集型分布式应用。 它由分布式文件系统HDFSHadoop 分布式文件系统和一种称为 MapReduce 的分布式分析处理方法组成。 它是用 Java 编写的,基于 Linux/Unix 平台。

它现在被广泛用于处理远远超过最大企业数据集大小的数据流。 无论是传感器、点击流、社交媒体、基于位置的数据,还是在大型 gob 中生成和收集的其他数据,Hadoop 经常在现场处理和分析这些数据。 Hadoop 的真正魔力在于,它能够将处理或计算逻辑移动到数据所在的位置,而不是传统系统,后者专注于扩展的单个服务器,将数据移动到中央处理器,并在那里处理数据。 这种模式不适用于当今业界希望挖掘以获取商业智能的数据量、速度和种类。 因此,Hadoop 凭借其强大的容错和可靠的文件系统以及高度优化的分布式计算模型,是大数据世界的领导者之一。

Hadoop 的核心是其存储系统和分布式计算模型:

HDFS

Hadoop 分布式文件系统是在主机操作系统文件系统之上的程序级抽象。 它负责在集群上存储数据。 数据被拆分成数据块,并跨群集中的多个节点分布。

MapReduce

MapReduce 是一种编程模型,用于在计算机集群上使用分布式计算处理大型数据集。 MapReduce 由两个阶段组成:将数据划分到大量独立的处理单元(称为 Map),然后将这些单独进程产生的结果组合成一个统一的结果集(称为 Reduce)。 在 Map 和 Reduce 之间,会发生混洗和排序。 在系统上成功配置 Hadoop 群集后,它具有以下基本组件:

NameNode

这也称为群集的头节点/主节点。 首先,它在处理跨节点分布的数据期间保存 HDFS 的元数据;它跟踪节点中的每个 HDFS 数据块。

备注

NameNode 是 Hadoop 集群中的单点故障。

二级 NameNode

这是一个可选的节点,在 NameNode 关闭时,您可以在群集中使用它来备份 NameNode。 如果配置了辅助 NameNode,它会定期保存 NameNode 配置的快照,以便在需要时充当备份。 但是,没有自动故障转移到辅助 NameNode 的方法;如果主要 NameNode 出现故障,则需要手动干预。 这实质上意味着,如果 NameNode 出现故障,集群中将出现明显的停机时间。

数据节点

这些是存储实际 HDFS 数据块的个集群中的个系统。 数据块在多个节点上复制,以提供容错和高可用性解决方案。

JobTracker

这是在 NameNode 上运行的服务,它管理 MapReduce 作业并分发各个任务。

TaskTracker

这是一个在 DataNodes 上运行的服务,它实例化并监视个提交的 Map 和 Reduce 任务。

下图显示了 Apache Hadoop 框架的核心组件:

TaskTracker

此外,还有多个 Hadoop 支持项目,每个项目都有其独特的用途,例如,将输入数据提供给 Hadoop 系统、在 Hadoop 之上进行特殊查询的数据仓库系统等等。 以下是一些值得一提的是:

同步,由 Elderman 更正@ELDER_MAN

HIVE 是 Apache Hadoop 主项目的支持项目,是 MapReduce 之上的抽象,允许用户在不开发 MapReduce 应用的情况下查询数据。 它为用户提供了一种类似 SQL 的查询语言,称为配置单元查询语言(HQL),用于从配置单元存储获取数据。 这使得具有 SQL 技能的人更容易快速适应 Hadoop 环境。

PIG

PIG 是 MapReduce 的另一种抽象,MapReduce 使用称为 Pig 拉丁语的数据流脚本语言。 这受到已经具备脚本编写技能的程序员的青睐。 您可以在名为 Grunt 的命令行 Pig shell 中交互运行 Pig 拉丁语语句。 您还可以将一系列 Pig 拉丁语句组合到一个脚本中,然后可以将其作为一个单元执行。 这些 Pig 拉丁语句由 Pig 解释器用于生成 MapReduce 作业,并在 HDFS 数据上执行。

Flume

Flume 是 Hadoop 之上的另一个开源实现,它提供了一种在生成数据时将数据摄取到 HDFS 中的机制。

Sqoop

Sqoop 提供了一种在关系数据库表(例如,SQL Server)和 HDFS 之间导入和导出数据的方法。

Oozie

Oozie 允许创建 MapReduce 作业的工作流。 这对于开发过基于工作流和通信基础的解决方案的开发人员来说是很熟悉的。

HBase

HBase 是 Hadoop 数据库,是NoSQL数据库。 它是 Hadoop 之上的另一个抽象,它为 HDFS 数据提供了近乎实时的查询机制。

Mahout

Mahout 是一个机器学习库,包含聚类和分类算法。 机器学习研究的一个主要焦点是自动学习识别复杂模式,并基于数据做出智能决策。

下图为您提供了 1000 英尺的 Apache Hadoop 和各种支持项目的视图,这些项目构成了这个令人惊叹的生态系统:

Mahout

我们将在本书的后续章节中探讨其中一些组件,但要获得完整的参考,请访问 apache 网站http://hadoop.apache.org/。

建立这个生态系统以及所需的支持项目可能真的不是一件容易的事。 事实上,此实现的唯一缺点是设置和管理 Hadoop 集群所需的工作量。 这基本上就是许多供应商提出自己的 Hadoop 发行版(捆绑和分发)作为数据处理平台的原因。 使用这些发行版,企业将能够通过简化且用户友好的群集部署向导在几分钟内设置 Hadoop 群集,还可以使用各种仪表板进行监控和检测。 目前的一些发行版包括 Cloudera 的CH4、Hortonworks Data PlatformMicrosoft HDInsight,它们正在迅速流行起来。 这些发行版超出了本书的范围,不会涉及;有关这些发行版的详细信息,请访问各自的网站。

摘要

在本章中,我们介绍了什么是大数据,以及为什么大数据是该行业的迫切需求之一。 需要处理的数据的多样性将信息技术推向了前所未有的高度。 能够利用大数据分析所有数据的组织将能够更有效地实现差异化,并为业务带来新的价值,无论是收入增长、成本节约,还是创建全新的业务模式。 例如,金融公司使用机器学习来构建更好的欺诈检测算法,超越了涉及收费频率和地点的简单业务规则,还包括个人定制的购买模式,最终带来更好的客户体验。

在大数据实施方面,这些新要求挑战了传统的数据管理技术,需要一种新的方法来使组织能够有效地管理、丰富和洞察任何数据。 Apache Hadoop 无疑是大数据行业的领导者之一。 整个生态系统及其支持项目为用户提供了一个高度可靠的容错框架,可用于非结构化和半结构化数据的大规模并行分布式处理。

在下一章中,您将看到如何使用 Sqoop 连接器将 Hadoop 数据移动到 SQL Server 2012,反之亦然。 Sqoop 是另一个开源项目,旨在将 Hadoop 中的数据双向导入/导出到任何关系数据库管理系统;我们将看到它的使用是 Hadoop 和 SQL Server 2012 之间数据集成的第一步。

二、使用 Sqoop——SQL Server Hadoop 连接器

Sqoop是一个开源的 Apache 项目,它促进了 Hadoop 和任何传统的关系数据库管理系统(RDBMS)之间的数据交换。 它在幕后使用 MapReduce 框架执行导入/导出操作,通常是集成来自关系和非关系数据存储的数据的常见选择。

Microsoft SQL Server Connector for Apache Hadoop(SQL Server-Hadoop Connector)是一款基于 Sqoop 的连接器,专为在 SQL Server 和 Hadoop 之间高效传输数据而设计。 此连接器针对双向大容量数据传输进行了优化,它不支持在动态导入或导出数据时对数据进行大量格式化或转换。 阅读本章后,您将能够:

  • 安装和配置 Sqoop 连接器
  • 将数据从 SQL Server 导入 Hadoop
  • 将数据从 Hadoop 导出到 SQL Server

SQL Server-Hadoop 连接器

Sqoop 是使用 JDBC 实现的,因此它也符合标准的 JDBC 特性。 数据的模式或结构由数据源提供,Sqoop 使用 JDBC 生成并执行 SQL 语句。 下表总结了 SQL Server 连接器提供的几个重要命令及其功能:

|

命令 / 掌握 / 俯视 / 控制

|

功能 / 目的 / 函数关系

|
| --- | --- |
| sqoop import | import命令允许您将 SQL Server 数据导入 HDFS。 您可以选择使用--table开关导入整个表,也可以选择使用--query开关根据条件导入所选记录。 数据一旦导入 Hadoop 文件系统,就会存储为分隔文本文件或SequenceFiles以供进一步处理。 您还可以使用import命令将 SQL Server 数据移动到配置单元表中,这些配置单元表类似于 HDFS 之上的逻辑架构。 |
| sqoop export | 您可以使用export命令将数据从 HDFS 移动到 SQL Server 表中。 与import命令非常类似,export命令允许您将数据从分隔文本文件、SequenceFilesHive表导出到 SQL Server 中。 export命令支持向目标 SQL Server 表插入新行、基于更新键列更新现有行以及调用存储过程执行。 |
| sqoop job | 使用job命令可以将import/export命令保存为作业以备将来重用。 保存的作业会记住执行过程中指定的参数,在需要定期重复运行import/export命令时尤其有用。 |
| sqoop version | 要快速检查您正在使用的 sqoop 版本,可以运行sqoop version命令在控制台中打印已安装的版本详细信息。 |

The SequenceFilesHadoop 中是包含序列化数据的二进制内容,而不是分隔的文本文件。 请参考 Hadoop 页面http://hadoop.apache.org/docs/current/api/org/apache/hadoop/io/SequenceFile.html,详细了解SequenceFiles是如何构造的。 此外,我们还将在本章的后续小节中介绍几个带有不同参数的示例import/export命令。 有关 SQOOP 命令及其开关的完整参考,请参阅 Apache Sqoop 用户指南http://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html。

备注

HIVE 是构建在 Hadoop 之上的数据仓库基础设施,这将在下一章中讨论。

安装前提条件

本章假设您有一个配置了 Hadoop 和配置单元的 Linux 群集,以及一个运行 SQL Server 2012 的 Windows 系统。 使用 SQL Server-Hadoop 连接器和运行本章中的示例命令都需要这两种环境。

Linux 上的 Hadoop 集群

第一步是在 Linux 上启动并运行 Hadoop 集群。 我们将使用此群集的 HDFS 从 SQL Server 导入和导出数据。 本章中的示例命令假定它们在 Red Hat Enterprise Linux 5.8 上的 Hadoop 版本 1.1.0、配置单元版本 0.9.0 上运行。

备注

确保将HADOOP_HOME环境变量设置为安装 Hadoop 的父目录。

安装和配置 Sqoop

下一步是在 Hadoop 集群的 NameNode 上安装和配置 Sqoop 连接器(如果尚未安装)。 我建议从 Apache 的网站下载并安装 Sqoop 1.4.2,这是本章中运行示例命令所使用的版本。

安装完成后,必须验证 Sqoop 环境变量是否设置了正确的值。 它们应设置为指向下表中所述的路径,SQL Server-Hadoop 连接器才能正常工作。 这还使您不必在每次需要执行各种 Sqoop 命令行实用程序时完全限定它们的路径。

下表介绍了 Sqoop 环境变量:

|

环境变量

|

要赋值的值

|
| --- | --- |
| SQOOP_HOME | 安装 Sqoop 的绝对路径。 |
| SQOOP_CONF_DIR | $SQOOP_HOME/conf假设SQOOP_HOME已经设置了正确的值。 |

设置 Microsoft JDBC 驱动

Sqoop 和 SQL 服务器-Hadoop 连接器使用Java 数据库连接(JDBC)技术建立到远程 RDBMS 服务器的连接,因此需要用于 SQL Server 的 JDBC 驱动。 本章假定使用 SQL Server JDBC 驱动 3.0 版(sqljdbc_3.0)。 要在刚刚安装了 Sqoop 的 Linux NameNode 上安装此驱动,请执行以下步骤:

  1. 访问http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=21599并将sqljdbc_3.0_enu.tar.gz下载到您的群集的 NameNode。
  2. 使用以下命令解压下载的文件:tar –zxvf sqljdbc_3.0_enu.tar.gz。 这将在当前目录中创建一个目录sqljdbc_3.0
  3. 将驱动 JAR(sqljdbc_3.0/enu/sqljdbc4.jar)文件复制到 NameNode 上的$SQOOP_HOME/lib目录。

下载 SQL Server-Hadoop 连接器

如果您已经达到这一点,最后,您就可以在集群的 NameNode 上下载、安装和配置 SQL Server-Hadoop 连接器了。

Microsoft SQL Server SQOOP Connector for Hadoop 现在是 Apache SQOOP 1.4.x 系列项目的一部分,Microsoft 不再从他们的站点提供单独的下载。 该连接器现在可以从 Apache 的网站下载:http://sqoop.apache.org/

下表总结了下载连接器后部署到 NameNode 的不同文件。 该表包含 SQL Server-Hadoop 连接器安装程序归档文件:

|

文件/目录

|

描述 / 描写 / 形容 / 类别

|
| --- | --- |
| install.sh | 这是一个 shell 脚本,其中包含复制 SQL Server-Hadoop 连接器所需文件和目录结构的命令。 |
| Microsoft SQL``Server-Hadoop``Connector User``Guide.pdf | 部署和执行 SQL Server-Hadoop 连接器命令的用户指南。 |
| lib/ | 此目录包含sqoop-sqlserver-1.0.jar文件。 这是包含大部分 Sqoop 命令定义的归档文件。 |
| conf/ | 此目录包含 SQL Server-Hadoop 连接器的配置文件。 |
| THIRDPARTYNOTICES``FOR HADOOP-BASED``CONNECTORS.txt | 本文件由第三方通知组成。 |
| SQL Server``Connector for``Apache Hadoop``MSLT.pdf | SQL Server Connector for ApacheHadoop 的最终用户许可协议。 |

安装 SQL Server-Hadoop 连接器

要安装 SQL Server-Hadoop 连接器,需要执行以下步骤:

  1. 使用用户凭据登录到您的群集 NameNode,该用户凭据具有安装文件的权限。
  2. 使用以下命令解压存档:tar –zxvf sqoop-sqlserver-1.0.tar.gz。 这将在当前工作目录中创建sqoop-sqlserver-1.0目录。
  3. 确保将MSSQL_CONNECTOR_HOME环境变量设置为sqoop-sqlserver-1.0目录的绝对路径。
  4. 将目录(cd)更改为sqoop-sqlserver-1.0,并在没有任何附加参数的情况下运行 shellscriptinstall.sh
  5. 安装程序将复制现有 Sqoop 安装目录下的连接器 JAR 和配置文件。

Sqoop 导入工具

现在,您可以使用 SQL Server-Hadoop 连接器并将数据从 SQL Server 2012 导入 HDFS。 导入过程的输入是 SQL Server 表,该表将由 Sqoop 逐行读取到 HDFS 中。 此导入过程的输出是一组文件,其中包含导入的表的副本。 由于导入过程是并行执行的,因此输出将位于多个文件中。

使用sqoop import命令时,必须指定以下强制参数:

  • --connect指定到 SQL Server 数据库的连接字符串的参数
  • --username--password参数提供连接到 SQL Server 数据库的有效凭据
  • --table--query参数,用于导入整个表或自定义查询执行的结果

以下命令将 SQL ServerAdventureworks2012数据库中ErrorLog表中的数据导入 HDFS 上/data/ErrorLogs目录中的分隔文本文件。

备注

Sqoop 1.4.2 不识别不属于默认dbo架构的 SQL Server 表。 通过添加--schema开关修复了这一问题,您可以在 Sqoop 1.4.3 中指定非默认模式名称。

以下命令介绍如何将数据从 SQL Server 表导入 HDFS:

$bin/ sqoop import --connect "jdbc:sqlserver://<YourServerName>;username=<user>;password=<pwd>;database=Adventureworks2012" --table ErrorLog --target-dir /data/ErrorLogs –-as-textfile

备注

您还可以使用--as-avrodatafile--as-sequencefile将数据分别导入到Avro文件和SequenceFiles,而不是在前面的示例命令中使用--as-textfile时使用纯文本。

成功执行上述代码将把 SQL 表的所有记录传输到逗号分隔的 HDFS 文件,输出应类似于以下屏幕截图:

The Sqoop import tool

您可以为sqoop import命令指定一个--split-by参数,并指定一个列来确定如何在映射器之间拆分数据。 如果未指定split-by列,则默认情况下使用主键列。 以下命令指定split-by列来计算映射器的拆分:

$bin/sqoop import --connect "jdbc:sqlserver://<YourServerName>;username=<user>;password=<pwd>;database=Adventureworks2012" --table ErrorLog --target-dir /data/ErrorLogsSplitBy --split-by  ErrorLogID -m  3

导入配置单元中的表

Sqoop 为提供-hive-import参数,用于将 SQL Server 表直接导入配置单元表。 以下命令显示如何将 SQL Server 数据导入配置单元:

$bin/ sqoop import --connect "jdbc:sqlserver://<YourServerName>;username=<user>;password=<pwd>;database=Adventureworks2012" --table ErrorLog -hive-import

请注意命令行输出的最后一部分的不同之处,它确认了配置单元中的操作,如以下屏幕截图所示:

Importing the tables in Hive

备注

要使用配置单元import命令,请确保已安装配置单元,并将HIVE_HOME设置为安装配置单元的父目录。

运行import命令后,您可以验证在 Hadoop NameNode 管理门户中创建的输出文件夹,如以下屏幕截图所示:

Importing the tables in Hive

Sqoop 导出工具

如前所述,Sqoop 是一个双向连接器。 Sqoop 的导出过程将并行地从 HDFS 读取一组分隔文本文件,将它们解析成记录,并将它们作为新行插入到目标数据库表中。 以下示例将数据从 HDFS 和配置单元导出到 SQL Server。 假设您正在安装 Sqoop 的 Hadoop 集群的主节点上的$SQOOP_HOME目录中运行命令。

使用sqoop export命令时,必须指定以下强制参数:

  • --connect指定到 SQL Server 数据库的连接字符串的参数
  • --username--password参数提供连接到 SQL Server 数据库的有效凭据
  • --table--call参数,用于导出到 SQL 表或调用存储过程调用
  • --export-dir参数指定要导出的 HDFS 目录

以下命令将数据从 HDFS 上/data/ErrorLogs中的分隔文本文件导出回 SQL Server 上Adventureworks2012数据库中的ErrorLog表:

$bin/ sqoop export --connect "jdbc:sqlserver://<YourServerName>;username=<user>;password=<pwd>;database=Adventureworks2012" --table ErrorLog-export-dir /data/ErrorLogs

您可以在执行export命令时指定映射器的数量。

以下命令使用用户定义的映射任务数从 HDFS 上的分隔文本文件导出数据:

$bin/sqoop export --connect "jdbc:sqlserver://<YourServerName>;username=<user>;password=<pwd>;database=Adventureworks2012" --table ErrorLog-export-dir /data/ErrorLogs-m 3

通常使用 Sqoop 在中间临时表中托管数据,以便在最终将数据加载到仓库之前应用一些转换和业务逻辑。 以下命令使用临时表,并指定在开始导出之前先清除临时表:

$bin/sqoop export --connect "jdbc:sqlserver://<YourServerName>;username=<user>;password=<pwd>;database=Adventureworks2012"   --table ErrorLog   --export-dir /data/ErrorLogs--staging-table ErrorLog_stage --clear-staging-table

备注

对于当前版本,使用--direct选项与执行import/export流无关。

数据类型

下表总结了此版本的 SQL Server-Hadoop 连接器支持的数据类型。 您应该参考本指南,以避免在数据迁移期间或之后出现任何类型的兼容性问题。 目前不支持下表中未提及的所有其他本机 SQL Server 类型,例如 XML、GEOGRAPHY、GEOMETRY、SQL_VARIANT 等:

|

数据类型类别

|

SQL Server 数据类型

|

SQL Server 数据类型范围

|

Sqoop 数据类型

|

Sqoop 数据类型范围

|
| --- | --- | --- | --- | --- |
| 精确数字 | bigint | -2^63 到 2^63-1 | Long | 最大值:263-1(9223372036854775807)最小值:-263(9223372036854775808) |
| bit | 0 或 1 | Boolean | 1 位 |
| int | -2^31 到 2^31-1 | Integer | 最大值:231-1(2147483647)最小值:-231(-2147483648) |
| 近似值 | float | -1.79E+308 至-2.23E-308,0 和 2.23E-308 至 1.79E+308 | Double | MAX_VALUE:(2-252)·21023 或(1.7976931348623157E3)08d)最小值:2^-1074 或(4.9E-324d) |
| 日期和时间 | date | 公元 1 年 1 月 1 日至公元 9999 年 12 月 31 日 | java.sql.Date | Int 年、int 月、int 日期:年份:减去 1900 年的年份。 必须在 0 到 8099 之间(请注意,8099 是 9999 减去 1900)月份:0 至 11 日期:1 至 31 |
| datetime | 日期范围:1753 年 1 月 1 日至(九九年十二月三十一日)时间范围:00:00:00 至 23:59:59.997 | java.sql.Timestamp | Int 年、int 月、int 日期、int 小时、int 分钟、int 秒、intNano:年份:年份减去 1900 月份:0 至 11 日期:1 至 31 日小时:0 至 23 分钟:0 到 59 秒:0 到 59 纳米:0 至 999,999,999 |
| 字符串 | char | 固定长度的非 Unicode 字符数据长度为n字节。 n必须是介于 1 和 8,000 之间的值。 | String | 最多 8,000 个字符 |
| varchar | 可变长度的非 Unicode 字符数据。 n可以是 1 到 8,000 之间的值。不支持 VAXERR(Max)。 | String | 最多 8,000 个字符 |
| Unicode 字符串 | nchar | n个字符的定长 Unicode 字符数据。 n必须是介于 1 到 4,000 之间的值。 | String | 最多 4,000 个 Unicode 字符 |
| nvarchar | 可变长度 Unicode 字符数据n可以是 1 到 4,000 之间的值。N不支持 varchar(Max)。 | String | 最多 4,000 个 Unicode 字符 |
| 二进制字符串 | binary | 固定长度的二进制数据,长度为n字节,其中n是 1 到 8,000 之间的值。 | BytesWritable.java | 最高可达 8,000 字节 |
| varbinary | 可变长度的二进制数据。 n可以是 1 到 8,000 之间的值。不支持变量二进制(Max)。 | BytesWritable.java | 最高可达 8,000 字节 |

有关支持的数据类型的完整列表,请参阅http://www.microsoft.com/en-us/download/confirmation.aspx?id=27584上的 SQL Server-Hadoop 连接器参考。

摘要

Sqoop 是一种基于 JDBC 的技术,用于从 Hadoop 到任何 RDBMS 解决方案的双向数据传输。 这为合并结构化和非结构化数据开辟了空间,并提供了对数据整体的强大分析。 SQL Server-Hadoop 连接器是一种 Sqoop 实施,专门为 SQL Server 和 Hadoop 之间的数据传输而设计。 本章介绍了如何在 Hadoop NameNode 上配置和安装 Sqoop,以及如何执行示例import/export命令在 SQL Server 和 Hadoop 之间来回移动数据。 在下一章中,您将通过另一个支持 Apache 的项目(称为配置单元)学习如何使用 Hadoop 数据。 您还将了解如何使用客户端配置单元 ODBC 驱动来使用商业智能工具(例如 SQL Server Integration Services)中的配置单元数据。

三、使用配置单元 ODBC 驱动

HIVE 是一个基于核心 Hadoop 的框架。 它充当 HDFS 之上的数据仓库系统,并提供对底层 HDFS 数据的简单查询机制。 编写 MapReduce 作业可能会很繁琐,而且会有自己的开发、测试和维护投资。 配置单元查询,称为配置单元查询语言(HQL),在幕后分解为 MapReduce 作业,对用户来说仍然是一个完整的抽象,并为 Hadoop 数据提供基于查询的访问机制。 配置单元查询的简单性和“SQL”特性使其成为用户的流行和首选,尤其是熟悉传统 SQL 技能的人喜欢它,因为启动时间要短得多。 下图概述了配置单元架构:

Using the Hive ODBC Driver

实际上,配置单元使您能够在 MapReduce 上创建一个接口层,其使用方式与传统关系数据库类似;使业务用户能够使用熟悉的工具(如 Excel 和 SQL Server Reporting Services)来使用 Hadoop 中的数据,其方式与通过 ODBC 连接远程使用 SQL Server 等数据库系统中的数据的方式相似。 本章的其余部分将引导您完成不同的配置单元操作,并使用配置单元 ODBC 驱动来使用数据。

学完本章后,您将能够:

  • 下载并安装配置单元 ODBC 驱动
  • 配置驱动以连接到在 Linux 上的 Hadoop 群集上运行的配置单元
  • 使用SQL Server Integration Services(SSIS)将数据从配置单元导入到 SQL Server

配置单元 ODBC 驱动

配置单元的主要优势之一是,它提供了类似于关系数据库的查询体验,而关系数据库是许多业务用户熟悉的技术。 从本质上讲,它允许所有兼容 ODBC 的客户端通过熟悉的ODBC 数据源(DSN)使用 HDFS 数据,从而将 Hadoop 暴露给广泛多样的客户端应用。

目前市场上有几个 ODBC 驱动,它们工作在各自的 Hadoop 发行版之上。 在本书中,我们将重点介绍 Microsoft ODBC Driver for Have 及其丰富的商业智能和可视化工具,该驱动可以弥合 Hadoop 和 SQL Server 之间的差距。 可以从http://www.microsoft.com/en-us/download/details.aspx?id=37134下载驱动。

该驱动有两种版本,64 位和 32 位,因此请确保根据客户端应用的位配置下载并安装适当的驱动。 在我的例子中,因为我将使用来自 32 位应用的驱动作为 Visual Studio,所以我使用了 32 位风格的驱动。 驱动安装完成后,您可以通过检查 ODBC 数据管理器的驱动列表中是否存在配置单元 ODBC 驱动来确认安装状态,如以下屏幕截图所示:

The Hive ODBC Driver

备注

如果您使用的是 64 位 Windows,并且使用的是 32 位 ODBC 驱动,则必须从C:\Windows\SysWow64\odbcad32.exe启动 ODBC 数据源管理器。

驱动安装成功后,请执行以下步骤以确保您可以成功地连接到配置单元:

  1. First, create a System DSN. In ODBC Data Sources Administrator, go to the System DSN tab and click on the Add Button as shown in the following screenshot:

    The Hive ODBC Driver

  2. Choose, the HIVE driver in the next screen of the Create New Data Source wizard as shown in the following screenshot:

    The Hive ODBC Driver

  3. On clicking Finish, you are presented with the final ODBC Hive Setup screen. Enter the Hadoop cluster details as well as the credentials used to connect to the cluster. In this sample, I am using my Hadoop cluster deployed in Linux, RH2754741 is my NameNode:

    The Hive ODBC Driver

  4. Once created, a new System DSN should appear in the list as in the following screenshot. In this case, I have named my DSN as HadoopOnLinux.

    The Hive ODBC Driver

  5. Now, we need to test the connection to Hive using the DSN HadoopOnLinux. The quickest way to test this out is to test from an .udl (Universal Data Link) file. To do this, create an empty .txt file and change the file extension to .udl. Then, double-click and open the .udl file, by default it should open with Microsoft OLE DB Core components and should look like the following screenshot:

    The Hive ODBC Driver

  6. 选择Microsoft OLE DB Provider for ODBC Drivers,然后单击Next

  7. Choose the DSN HadoopOnLinux created in the previous steps. Provide the User name and Password for your Hadoop cluster and click on the Test Connection button. A successful test connection will confirm that the Hive ODBC driver is correctly set up as in the following screenshot and we are ready to go!

    The Hive ODBC Driver

SQL Server Integration Services(SSIS)

Microsoft SQL Server 是一套完整的工具,其中包括 RDBMS 系统、多维 OLAP 和表格数据库引擎以及其他服务,例如代理服务、计划服务(SQL 代理)等。 正如在第 1 章,大数据和 Hadoop 简介中所讨论的,如今在不同来源之间集成数据变得极其重要。 SQL Server 还提供了强大的商业智能堆栈,该堆栈为数据挖掘和交互式报告提供了丰富的功能。 其中一个 BI 组件是称为SQL Server Integration Services(SSIS)的提取、转换和加载(ETL)工具。 SSIS 通过将配置单元数据导入 SQL Server 并对集成数据应用强大的分析来提供合并结构化和非结构化数据的能力。 在本章的其余部分中,我们将对 SSIS 的工作原理有一个基本的了解,并创建一个简单的 SSIS 包来将数据从配置单元导入到 SQL Server。

作为 ETL 提取、转换和加载工具的 SSIS

ETL 工具的主要目标是能够在异构数据源之间导入和导出数据。 这包括连接到外部系统的能力,以及在外部系统和数据库之间移动数据时转换或清除数据的能力。 SSI 可用于向 SQL Server 导入数据或从 SQL Server 导入数据。 它甚至可以用于在外部非 SQL 系统之间移动数据,而不需要 SQL Server 作为源或目标。 例如,SSIS 可用于将数据从 FTP 服务器移动到本地平面文件。

SSIS 还提供了一个工作流引擎,用于自动执行不同的任务(例如,数据流、任务执行等)。 在 ETL 作业中执行的。 SSIS 包执行本身可以是 SQL 代理作业的一部分,并且 SQL 代理可以独立运行多个作业。

SSIS 解决方案由一个或多个包组成,每个包都包含执行一系列任务的控制流。 控制流中的任务可以包括对 Web 服务的调用、FTP 操作、文件系统任务、命令行命令的自动化等。 具体地说,控制流通常包括一个或多个数据流任务,这些任务封装了从源到目的地的内存中的、基于缓冲区的数据流水线,并在数据流经流水线时对其应用转换。 一个 SSIS 包有一个控制流,需要多少数据流就有多少数据流。 数据流的执行由控制流的内容决定。

有关 SSIS 及其组件的详细讨论超出了本书的范围,并且假定您熟悉使用 Business Intelligence Development Studio(SQL Server 2005/2008/2008 R2)或 SQL Server Data Tools(SQL Server 2012)进行的基本 SSIS 包开发。 如果您是 SSIS 的初学者,强烈建议您阅读大量 SSIS 书籍作为前提条件。 在本章的其余部分,我们将重点介绍如何使用配置单元 ODBC 驱动使用 SSIS 中的配置单元数据。

开发本章中显示的软件包的先决条件是 SQL Server 数据工具(作为 SQL Server 2012 客户端工具和组件的一部分)和安装的 32 位配置单元 ODBC 驱动。 您还需要在 Hadoop 集群上运行配置单元。

开发包

SQL Server Data Tools(SSDT)是 Microsoft 提供的用于设计、部署和开发 SSIS 包的集成开发环境。 当您选择从 SQL Server 安装介质安装 SQL Server 客户端工具和工作站组件时,将安装 SSDT。 SSDT 支持创建 Integration Services、Analysis Services 和 Reporting Services 项目。 在这里,我们将重点介绍 Integration Services 项目类型。

创建项目

执行以下步骤以创建新项目。

  1. Launch SQL Server Data Tools from SQL Server 2012 program folders as shown in the following screenshot:

    Creating the project

  2. Create a new Project and choose Integration Services Project in the New Project dialog as shown in the following screenshot:

    Creating the project

  3. 这将创建 SSIS 项目,其中空白Package.dtsx在项目的解决方案资源管理器窗口中可见,如以下屏幕截图所示:

Creating the project

创建数据流

数据流是一个 SSIS 包组件,它由提取和加载数据的源和目标、修改和扩展数据的转换以及链接源、转换和目标的路径组成。 在将数据流添加到包之前,包控制流必须包括数据流任务。 数据流任务是 SSIS 包中的可执行文件,用于创建、排序和运行数据流。 将为包中的每个数据流任务打开数据流引擎的单独实例。 要创建数据流任务,请执行以下步骤:

  1. Double-click (or drag-and-drop) on a Data Flow Task from the toolbox on the left. This should place a Data Flow Task in the Control Flow canvas of the package as in the following screenshot:

    Creating the Data Flow

  2. Double-click on the Data Flow Task or click on the Data Flow tab in SSDT to edit the task and design the source and destination components as in the following screenshot:

    Creating the Data Flow

创建源配置单元连接

我们需要做的第一件事是创建一个连接管理器,该管理器将连接到 Hadoop 集群中托管的配置单元数据表。 我们将使用 ADO.NET 连接,该连接将使用我们先前创建的 DSNHadoopOnLinux连接到配置单元。 要创建连接,请执行以下步骤:

  1. Right-click on the Connection Managers section in the project and click on New ADO.Net Connection... as shown in the following screenshot:

    Creating the source Hive connection

  2. From the list of providers, navigate to .Net Providers | ODBC Data Provider and click on OK in the Connection Manager window as shown in the following screenshot:

    Creating the source Hive connection

  3. Select the HadoopOnLinux DSN from the Data Sources list. Provide the Hadoop cluster credentials and test connection should succeed as shown in the following screenshot:

    Creating the source Hive connection

创建目标 SQL 连接

我们需要配置连接以指向 SQL Server 实例和数据库表,我们将在其中从配置单元导入数据。 为此,我们需要创建到目标 SQL 的连接管理器,就像我们对源配置单元所做的那样:

  1. Right-click on the Connection Manager section of the project again, and this time, choose New OLE DB Connection... as shown in the following screenshot:

    Creating the destination SQL connection

  2. From the list of providers, choose Native OLE DB | SQL Server Native Client 11.0. Key in the target SQL Server name and select the database where the target table resides. Test connection should succeed confirming the validity of the connection manager for the destination as shown in the following screenshot:

    Creating the destination SQL connection

    备注

    在本例中,我选择了 OLE DB 来连接到 SQL。 您也可以选择使用 ADO.NET 或 ODBC 连接来执行相同的操作。

创建配置单元源组件

接下来,我们需要配置源组件,该组件将连接到配置单元并获取数据。 成功创建连接后,双击以将ADO Net Source放置在数据流画布上,如以下屏幕截图所示:

Creating the Hive source component

备注

在 SSIS 2012 中,ODBC 源和 ODBC 目标是产品中包含的一对数据流组件。 尽管 ODBC Source 组件支持许多与 ODBC 兼容的数据源,但在撰写本文时,该组件还不支持配置单元 ODBC 驱动。 如今,从 SSIS 使用配置单元 ODBC 驱动的唯一选择是通过 ADO.NET 组件。

右键单击ADO Net Source,然后单击Edit,将源配置为使用刚创建的连接连接到配置单元表格。 选择连接管理器(我将其命名为配置单元连接)和配置单元表(在我的示例中,它是facebookinsights表)。 您可以预览数据,以确保源可以毫无问题地提取数据。 此外,请确保导航到Columns选项卡,并确认您可以看到表中的所有列。 点击确定完成配置,如下图所示:

Creating the Hive source component

提示

您还可以通过单击ADO.NET 连接管理器旁边的New按钮,在配置源组件的同时动态创建连接管理器。

创建 SQL 目标组件

配置源后,我们需要配置要导入配置单元数据的目标。 在本例中,我将使用 SQL Server 作为目的地。 为此,请双击并将OLE DB Destination组件放置在数据流画布中。 确保通过在源和目标之间拖动箭头来连接ADO Net SourceOLE DB Destination组件。 这是 SSIS 根据源架构结构自动生成目标的元数据和列映射所必需的。 该软件包应该类似于以下屏幕截图:

Creating the SQL destination component

备注

在本例中,我使用 OLE DB 目标组件绑定到目标 SQL Server 表。 但是,您也可以将 ADO.NET 目标组件或 SQL Server 目标组件用于相同的目的。

仅当包在 SQL Server 驻留的同一系统上本地运行时,SQL Server 目标才起作用。

现在,可以将OLE DB 目标配置为指向正确的 SQL 连接和数据库表。 为此,请右键单击OLE DB Destination组件,然后单击Edit。 选择我们刚刚创建的OLE DB 连接管理器到 SQL 和目标表。 在本例中,我将连接命名为SQL Connection,并且已经在 SQL 数据库中创建了一个名为facebookinsights的预定义表。 如果您没有预先创建表格,您可以通过单击表格的名称或视图下拉列表旁边的New按钮来选择动态创建目标表。 以下屏幕截图显示了这一点:

Creating the SQL destination component

备注

您还可以在配置目标组件的同时动态地创建连接管理器和数据库表,方法是单击相应的New按钮,如前面的屏幕截图所示。

映射列

完成此操作后,请确保导航到Mappings选项卡,以确保源和目标之间的列映射正确,如下面的屏幕截图所示。 单击确定完成配置。

Mapping the columns

备注

如果您选择自己创建目标表,并指定与源不同的列名,则必须手动映射这些源列和目标列中的每一列。 SSIS 的内置列映射智能基于相同的列名,因此如果它们不同,请确保正确设置列映射。

源和目标之间的数据流以及连接管理器应该类似于以下屏幕截图:

Mapping the columns

运行包

瞧!! 我们都准备好出发了。 从菜单栏导航到Debug|Start Debug或按F5或单击工具栏中的 Play(播放)按钮来执行包,如以下屏幕截图所示:

Running the package

包应该成功运行,将记录从配置单元表传输到 SQL Server 表,并显示导入的记录总数,如以下屏幕截图所示:

Running the package

如果您在 64 位 Windows 操作系统中运行此程序包,则需要将Run64BitRuntime属性从项目属性|配置属性|调试选项卡更改为False,以执行使用 32 位配置单元 ODBC 驱动的程序包,如以下屏幕截图所示:

Running the package

现在,您可以将此包计划为 SQL Server 作业,并定期运行数据加载。 您可能还希望在数据加载到目标 SQL 仓库之前对其应用一些转换,以清理数据,或者使用内置的 SSIS 数据流转换组件应用必要的业务逻辑。

摘要

在本章中,我们深入了解了 Hadoop 的支持项目 Hive。 HIVE 充当 HDFS 之上的数据仓库,提供称为 HQL 的简单、熟悉的类似 SQL 的查询结构来获取底层数据。 HQL 在内部被分解成 MapReduce 代码,从而使最终用户不必编写复杂的 MapReduce 代码。 我们还了解了在客户端使用者和 Hadoop 之间充当接口的 Have ODBC 驱动;如何安装该驱动以及如何测试该驱动是否能够成功连接到 Have。 在本章中,我们还简要介绍了 SQL Server 及其商业智能组件。 我们开发了一个示例包,它使用配置单元 ODBC 驱动连接到配置单元,并将数据从配置单元表facebookinsights导入到 SQL Server。 一旦数据存储到 SQL Server 中,我们就可以利用仓库解决方案,如SQL Server Analysis Services(SSAS)来分割数据,并利用SQL Server Reporting Services(SSRS)对数据进行强大的报告。 这还使我们能够集成要与传统 RDBMS 数据合并的非关系数据,并将其作为一个整体提取信息。 在下一章中,您将看到如何使用配置单元 ODBC 驱动在 SQL 中创建链接服务器。 您还将学习如何使用链接服务器查询从配置单元导入数据,并在 SSAS 中创建多维模型以供进一步处理。

四、使用 SQL Server Analysis Services 创建数据模型

Apache Hadoop 带来了在传统的基于 RDBMS 的数据仓库系统(例如 SQL Server)中无法实现的灵活性和可扩展性。 在核心 Hadoop 之上,配置单元充当一个数据仓库,为您的 HDFS 数据提供逻辑架构,从而允许特殊查询机制处理大型数据集。 但是,查询执行、性能和周转时间通常是大多数常见 BI 实现场景的决定性因素。 来自 Hadoop 和 Have 的查询响应主要是批处理操作,这些操作的设计和预期都很耗时,而且不可能接近实时。 但有些场景是企业需要的,在这些场景中,他们需要对他们的查询进行实时回答。

您可以使用配置单元查询语言(HQL)将数据从 Hadoop 导入到 SQL Server Analysis Services(SSAS)。 然后,Analysis Services 可以从那里获取数据,并提供实时洞察力和强大的数据报告功能。 学完本章后,您应该能够:

  • 创建要配置单元的 SQL 链接服务器
  • 查询 SQL 链接服务器以从配置单元获取数据
  • 从配置单元创建 Analysis Services 多维数据模型

将 SQL 链接服务器配置为配置单元

由于配置单元表仅通过 ODBC 公开,因此没有直接方法将 Analysis Services 数据库连接到 Hadoop,因为 Analysis Services 只能连接到符合 OLE DB 的数据源。 要解决此问题,唯一的方法是使用配置单元 ODBC 驱动在 SQL Server 实例中创建一个链接服务器,并通过 OLE DB for ODBC 使用它。 我们将重用在前面几章中创建的 DSNHadoopOnLinux来连接到配置单元。

要创建链接服务器,请执行以下步骤:

  1. Connect to the SQL Server instance using SQL Server Management Studio and expand the Server Objects as shown in the following screenshot:

    Configuring the SQL Linked Server to Hive

  2. Right-click on Linked Servers and choose New Linked Server. This should bring up the New Linked Server window as shown in the following screenshot:

    Configuring the SQL Linked Server to Hive

  3. You have to fill in the details of the Hive Data source that you would like connect to. In this case, I have named the Linked Server as LINKTOHIVE. You have to choose Microsoft OLE DB Provider for ODBC Drivers from the Provider list. You will also have to fill in the Data source property with the DSN named HadoopOnLinux so that we have an appropriate Provider string as shown in the following screenshot:

    Configuring the SQL Linked Server to Hive

  4. Navigate to the Security section, select Be made using this security context and provide your Hadoop cluster credentials as shown in the following screenshot:

    Configuring the SQL Linked Server to Hive

  5. Click on OK and this should create a new Linked Server named LINKTOHIVE under SQL Server Linked Servers as shown in the following screenshot. You can right-click on the Linked Server and test connection to confirm that everything is set up correctly.

    Configuring the SQL Linked Server to Hive

如果您喜欢基于脚本的数据库对象创建,也可以使用以下脚本创建链接服务器:

链接服务器脚本

通过从 SQL Server Management Studio 执行以下 Transact-SQL 脚本,可以将链接服务器设置为配置单元:

EXECmaster.dbo.sp_addlinkedserver@server= N'LINKTOHIVE',@srvproduct=N'Hive',@provider=N'MSDASQL',@datasrc=N'HadoopOnLinux',@provstr=N'Provider=MSDASQL.1;Persist Security Info=True'
/* For security reasons the linked server remote logins password is changed with ######## */
EXECmaster.dbo.sp_addlinkedsrvlogin@rmtsrvname=N'LINKTOHIVE',@useself=N'False',@locallogin=NULL,@rmtuser=N'debarchans',@rmtpassword='########'

备注

请确保将rmtuserrmtpassword值替换为您自己的值。

您可以使用OpenQueryTransact-SQL 命令连接到数据源,在 Hadoop 群集上运行查询,然后将结果返回给 SQL Server。

使用 OpenQuery

以下 Transact-SQL 脚本说明了如何使用 SQL 链接服务器查询我们先前创建的facebookinsights配置单元表:

SELECT * FROM OpenQuery([LINKTOHIVE], 'SELECT * FROM facebookinsights;')

从查询分析器执行此查询应该会显示配置单元表中的记录,如以下屏幕截图所示:

Using OpenQuery

本章的下一节讨论从链接服务器查询导入的数据创建多维联机分析处理数据模型(MOLAP)。 但是,多维项目仅支持 SQL 表或视图作为其数据源。 因此,在跳到商业智能项目之前,我们将基于链接服务器查询在我们的 SQL 数据库中创建一个视图。

创建视图

下面的 Transact-SQL 根据我们之前使用的OpenQuery语句创建视图:

Create View KeyMetrices ASSELECT * FROM OpenQuery([LINKTOHIVE],'SELECT * FROM facebookinsights;')

备注

Analysis Services 表格项目支持直接 SQL 查询来创建数据模型。

创建 SSAS 数据模型

在运行 SQL Server 的计算机上创建链接服务器后,在 SQL Server 数据工具中将 Analysis Services 连接到配置单元非常简单。 本章的其余部分将介绍如何使用我们按照上一节提到的步骤创建的视图,将数据从配置单元表导入到 SSAS 多维和数据挖掘项目中。

执行以下步骤以创建 SSAS 数据模型:

  1. In SQL Server Data Tools, on the File menu, click on New, and then click on Project. In the New Project dialog box, under Installed Templates, navigate to Business Intelligence | Analysis Services, and then select Analysis Services Multidimensional and Data Mining Project as shown in the following screenshot:

    Creating an SSAS data model

  2. 在这里,您的需要为您的项目文件指定名称位置。 默认情况下,解决方案名称将与项目名称相同;但是,如果需要,您可以键入不同的解决方案名称。 我将我的项目命名为Demo。 单击确定继续并创建项目。

  3. Once the project is created, the key tasks are to define your Data Sources and Data Source Views, which you can see in the Solution Explorer window as in the following screenshot:

    Creating an SSAS data model

  4. Right-click on Data Sources and choose New Data Source. This would launch the Data Source Wizard as in the following screenshot:

    Creating an SSAS data model

  5. Next, you have to define the connection to the database where you created the Linked Server and the View. You could select the connection if it is already prepopulated in the Data Source Wizard, else, you could click on the New button to set up the connection as in the following screenshot:

    Creating an SSAS data model

  6. Next, in the Impersonation Information page, make sure that Use the credentials of the current user is selected as in the following screenshot:

    Creating an SSAS data model

  7. Click on Next, you could choose a Data source name for your connection as shown in the following screenshot:

    Creating an SSAS data model

  8. Click on Finish, the data source would be created successfully and displayed in the Solution Explorer window as shown in the following screenshot:

    Creating an SSAS data model

  9. Once the data source is created, you would need to define the data source views. These views will actually serve as the models for further creation of relationships, cubes, and dimensions in your solution based on the requirements. To create a view, right-click on Data Source Views and choose New to launch the Data Source View Wizard as shown in the following screenshot:

    Creating an SSAS data model

  10. Click on Next and select the data source Demo created previously, as shown in the following screenshot:

![Creating an SSAS data model](https://github.com/OpenDocCN/freelearn-ds-zh/raw/master/docs/ms-sqlsvr-2012-hadoop/img/7982EN_04_15.jpg)
  1. Click on Next and you should be able to see the KeyMetrices view we created in the previous section under the Available objects list. Click on the right arrow to move it under the Included objects list as shown in the following screenshot:
![Creating an SSAS data model](https://github.com/OpenDocCN/freelearn-ds-zh/raw/master/docs/ms-sqlsvr-2012-hadoop/img/7982EN_04_16.jpg)
  1. The last screen of the wizard is where you provide the name for your data source view and complete the wizard by clicking on Finish as in the following screenshot:
![Creating an SSAS data model](https://github.com/OpenDocCN/freelearn-ds-zh/raw/master/docs/ms-sqlsvr-2012-hadoop/img/7982EN_04_17.jpg)
  1. Clicking on Finish will create the view and fetch the columns from the Key metrics$ view as shown in the following screenshot:
![Creating an SSAS data model](https://github.com/OpenDocCN/freelearn-ds-zh/raw/master/docs/ms-sqlsvr-2012-hadoop/img/7982EN_04_18.jpg)

您可以按照的要求多次执行这些步骤,以添加您可能想要添加到模型中的其他表或视图。 一旦导入了对象并定义了关系,您就可以进一步处理项目,根据您的特定需求为您的数据仓库定义多维数据集和维度。 SQL Server 2012 Analysis Services 还支持表格项目,该项目可以根据列数据类型为您的仓库提供度量和事实建议。 如果您感兴趣,可以关注博客http://dennyglee.com/2013/05/29/import-hadoop-data-into-sql-bi-semantic-model-tabular/,了解如何从配置单元数据创建 AS 表格模型。

摘要

在本章中,您了解了如何利用配置单元 ODBC 驱动从 Analysis Services 使用 Hadoop/配置单元。 由于 Analysis Services 直接不支持 ODBC,因此您必须使用 OLE DB to ODBC Bridge 创建一个链接服务器以配置单元,然后使用链接服务器查询作为 Analysis Services 表格项目模型中的数据源。 通过配置单元 ODBC 驱动,可以轻松地将 Hadoop 配置单元表中的数据导入到 SQL Server Analysis Services 多维数据模型中,在这些数据模型中可以使用商业智能工具进一步查看、整形和分析数据。

下一章将重点介绍微软提供的自助式 BI 工具,以及如何只需点击几下即可使用这些工具生成强大的交互式可视化效果。

五、使用微软的自助式商业智能工具

商业智能的重点是为商业用户提供比他们从运营系统中获得的更准确、更可靠、更好的信息。 传统的 BI 解决方案一直依赖于集中式的、经过清理和转换的数据存储区,用户可以通过标准化报告访问该数据存储区,偶尔还可以通过临时查询工具进行访问。 报告由 Bi 专家开发,最低要求是聘请一组专业人员来运行和维护基础设施和解决方案。

在部署这样的系统之后,对满足特定需求的数据源或新数据源的请求可能需要几天时间才能提供服务,因为它必须通过定义的变更管理请求。 由于只有几个资源经过了足够好的培训来处理这些请求,因此这些更改甚至可能需要数周时间才能实施。

许多高管已经意识到,在动态的业务环境中,当前的 BI 方法无法跟上数据流入的步伐。 数据现在无处不在,而且呈指数级增长。 在任何事情上过于依赖大预算的 BI 团队都是不能接受的。 这导致了一种名为自助式 BI 的新技术的诞生。 自助式商务智能是目前镇上的热门话题。 它允许您快速高效地执行专业级别的数据分析,而无需雇佣一套昂贵的 BI 基础设施或一组熟练的人员。 Microsoft 提供了一套丰富的自助式 BI 工具,可以连接到包括 SQL Server 2012 和 Hadoop 在内的各种数据源,并快速提供有关数据的见解。 它与强大的报告工具相结合,在底层数据上产生无缝的交互式可视化。 这通常位于管理金字塔的顶端,业务主管审阅这些报告,并做出改善业务和更有效地利用资源的决策。 在本章中,您将了解以下内容:

  • Microsoft 自助式 BI 工具
  • 使用 PowerPivot 生成数据模型
  • 使用 Power View 在数据模型上创建交互式报告

PowerPivot 增强功能

SQL Server 2012 为 Excel 插件形式的 PowerPivot 客户端以及 SharePoint 中的 PowerPivot 服务器端组件引入了增强的数据分析功能。 这使得 Microsoft Office 用户只需点击几下即可拥有自助式商业智能功能,这是以前从未有过的。 用户现在可以更轻松地集成来自不同来源的数据,并使用熟悉的工具(如 Excel 和 SharePoint)提供强大的数据可视化,从而使企业能够做出正确的决策。

PowerPivot 作为 Excel 2010 的外接程序提供,允许从任何源和联合集成数据,包括Open Data Protocol(ODATA)提要、RDBMS 源、Hadoop 等。 使用 PowerPivot,您可以从前面提到的任何不同的数据源创建自己的数据模型,并将大量数据直接导入 Excel。 如果需要将这些数据模型作为共享存储库,则可以在 SharePoint 服务器中发布它们,并非常容易地在整个企业中共享它们。 PowerPivot 模型还可以作为市场上可用的其他商业智能工具的数据源,包括 Power View(本章稍后讨论),以生成直观、交互的报告,以进行趋势分析、预测分析等。

以下部分说明如何基于先前使用配置单元 ODBC 驱动创建的facebookinsights配置单元表生成 PowerPivot 数据模型。 我们在演示中使用了 Excel 2013。 确保打开 Excel 所需的加载项,如以下屏幕截图所示,以构建本章中使用的示例:

  1. Navigate to File | Options | Add-ins. In the Manage drop-down list, choose COM Add-ins and click on Go, and enable the following add-ins:

    PowerPivot enhancements

    备注

    Excel 2010 也支持 PowerPivot。 Power View 和数据资源管理器仅在 Excel 2013 中可用。

  2. To create a PowerPivot model, open Excel, navigate to the PowerPivot ribbon and click on Manage as shown in the following screenshot:

    PowerPivot enhancements

    这将打开 PowerPivot for Excel 窗口,我们需要在其中配置到配置单元的连接。

  3. Click on Get External Data and choose From other Sources as shown in the following screenshot:

    PowerPivot enhancements

  4. Since we would be using the Hive ODBC provider, choose Others (OLEDB/ODBC) and click on Next on the Table Import Wizard as shown in the following screenshot:

    PowerPivot enhancements

  5. The next screen in the wizard accepts the connection string for our data source. It is easier to build the connection string instead of writing it manually. So, click on the Build button to bring up the Data Link window where you can select the HadooponLinux DSN we created earlier, and provide the correct credentials to access the Hadoop cluster. Make sure to check Allow saving password so that the password is retained in the underlying PowerPivot Table Import Wizard. Also, verify that test connection succeeds as shown in the following screenshot:

    PowerPivot enhancements

  6. The Table Import Wizard dialogue should now be populated with the appropriate Connection String as shown below in the following screenshot:

    PowerPivot enhancements

  7. Next, we are going to choose the Hive table directly, but we can also write a query (HiveQL) to fetch the data as shown in the following screenshot:

    PowerPivot enhancements

  8. Select the facebookinsights table and click on Finish to complete the configuration as in the following screenshot:

    PowerPivot enhancements

  9. The Hive table with all the rows should get successfully loaded in the PowerPivot model as shown in the following screenshot:

    PowerPivot enhancements

  10. 关闭表格导入向导

数据已添加到模型中,因此我们还可以继续并关闭 PowerPivot 窗口。 这将把我们带回 Excel 工作表,它现在内存中有数据模型。 在下一节中,我们将了解如何使用 Power View 使用 PowerPivot 数据模型并快速创建智能交互式报表。

Excel 的 Power View

Microsoft Excel 2013 推出了一款全新的自助式 BI 工具,名为 Power View。 这也是用于 Microsoft SharePoint Server 2013 企业版的 SQL Server 2012 Reporting Services Service Pack 1 外接程序附带的 Microsoft SharePoint 2013 的一部分。 Power View 的客户端(Excel)和服务器端(SharePoint)实现都提供了一种交互式方式来浏览和可视化您的数据,以及在底层数据之上生成交互式报告。

本章的其余部分显示基于facebookinsights表数据的 Power View 报告示例,让您快速了解表面级别的强大报告功能。 有关“如何设计 Power View 报告”以及 Power View 与 SharePoint 集成的详细信息不在本书讨论范围之内,也不会深入讨论。

备注

仅 Excel 2013 支持 Power View。 您需要安装 Excel 的 Power View 加载项。

要基于先前创建的 PowerPivot 数据模型创建 Power View 报告,请在 Excel 中单击Insert功能区,然后单击Power View,如以下屏幕截图所示:

Power View for Excel

这将启动一个新的 Power View 窗口,其中的 PowerPivot 模型已可用,如以下屏幕截图所示:

Power View for Excel

我们可以选择需要的字段并将其显示在我们的报告中。 您可以在不同类型的图表、表格和矩阵报告之间进行选择。 例如,我创建了一个报告,显示一段时间内我的 Facebook 页面的点赞和粉丝数量,如以下截图所示:

Power View for Excel

Power View 设计器为您提供了不同类型的图表、轴和时间线布局,这使得生成简单的可视化效果变得非常容易。 但是,不应将这些自助服务工具视为我们现有 BI 解决方案的替代品。 它不是标准参数化报告的替代品,而是一种增强功能,使关键职能部门和领导者能够利用自己的分析,而不会给稀缺的 IT 资源带来压力。

摘要

在本章中,我们学习了如何将 Microsoft 自助式 BI 工具与 Hadoop 和 Have 集成,以使用数据并生成强大的数据可视化效果。 随着技术范式的转变,该行业正走向一个信息技术将成为消费产品的时代。 个人应该能够通过 Power View 这样的客户端插件在一定程度上可视化他所需要的洞察力。 这些自助式 BI 工具提供了与各种数据源无缝连接和对话的能力,并创建了内存中的数据模型,将来自这些不同来源的数据组合在一起,以实现强大的报告功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/947233.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年安全防坠器厂家最新推荐排行榜权威发布,结合中国安全防护用品行业协会测评数据揭晓行业实力企业成都安全防坠器/安全防坠器测试厂家推荐

引言 在工业生产、建筑施工等高空作业场景中,安全防坠器是守护人员生命安全的关键设备。为给企业和用户提供精准采购指引,本次 2025 年安全防坠器品牌最新推荐排行榜,由中国安全防护用品行业协会全程参与测评指导。…

矢量图

% 加载数据 [filepath, name, ext] = fileparts(C:/Users/wangkaichen/Desktop/damn_shuju/MACHINE_Data.mat_/MACHINE_Data.mat); load(C:/Users/wangkaichen/Desktop/damn_shuju/MACHINE_Data.mat_/MACHINE_Data.mat…

上周热点回顾(10.20

热点随笔:从一个普通程序员的角度,聊聊当前环境下,是否还适合做编程 (天航星) 官宣!博客园&小马算力达成战略合作——为开发者注入强劲“算力引擎” (博客园团队) 1024开发者狂欢季!小马算力 博客园福利矩…

2025 年电驱动厂家最新推荐排行榜:依托国家智能测控系统产业计量测试联盟测评数据,精选伺服电机、新能源汽车电机等领域优质品牌

引言 随着智能制造、航空航天等领域对电驱动技术需求的激增,市场对专业测试系统的精度、稳定性要求愈发严苛。为精准筛选优质品牌,本次榜单联合国家智能测控系统产业计量测试联盟开展权威测评,测评覆盖全国 32 个省…

2025 年最新推荐 PPT 生成软件排行榜:权威协会测评 + AI 备案技术加持,3500 万用户信赖之选全面解析

引言 为助力职场人士、企业及学生群体精准挑选高效 PPT 生成工具,办公软件行业协会联合数字化办公研究院开展 2025 年度 PPT 生成工具专项测评。本次测评历时 3 个月,覆盖国内 68 款主流工具,采用 “技术实力 + 功能…

2025 年减速器源头厂家最新推荐榜:RV / 精密 / 通用减速器测试品牌技术实力权威测评

引言 在智能制造升级浪潮下,减速器试验设备成为保障传动部件品质的核心支撑,但其市场存在精度参差、数据可靠性不足等问题。为破解选型难题,本次榜单依托国家智能测控系统产业计量测试联盟2025 年度测评数据,联合国…

20232413 2025-2026-1 《网络与系统攻防技术》实验三实验报告

一、实验目标1.运用代码变形技术实施恶意代码变形,具体包括使用 Msfvenom、Veil 等工具生成变形后的恶意代码,以及借助加壳工具对恶意代码进行加壳处理,以此规避杀软的检测。2.利用 Shellcode,并结合不同的编程平台…

树莓派安卓项目-全-

树莓派安卓项目(全)原文:zh.annas-archive.org/md5/82683C8EDBA50EABD87C138CE7CE4264 译者:飞龙 协议:CC BY-NC-SA 4.0前言 制造者社区中最受欢迎的小工具Raspberry Pi和最受欢迎的智能手机操作系统Android在本书…

数据结构——LinkedList和链表 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 亲测!永久删除的照片这样救,完整指南来了

你是否曾打开图库,想重温海滩日落,怀念毕业自拍,又或者只是想念你家狗狗的可爱模样?然而,你却找不到它:图库里找不到,云备份里找不到,甚至连已删除的照片文件夹里也找不到。它不见了? 或者是? 事实是这样的:…

vmp 资源加密 IAT加密

vmp 资源加密 IAT加密 资源在运行到oep后自动解密,使用resource hacker分析

2025 年阳台光伏厂家最新推荐榜:技术实力与市场口碑深度解析,含逆变器/储能/光伏板优质企业

引言 伴随分布式能源需求年增 23%,阳台光伏已成为家庭能源转型的核心选择,但市场 300 余个品牌中仅 12% 通过国家 CQC 全项认证,品质参差不齐问题显著。为破解选择难题,本次榜单由光伏行业协会联合 HTW 检测机构权…

折旧分配表点击修改按钮报错,软件卡死

解决办法: 固定资产-设置-选项-折旧信息页签,取消勾当月初已计提月份=可使用月份-1时将剩余折旧全部提足,点确定;再点开勾选上此项,点确定,重新计提本月折旧

命令行数据科学实用指南-全-

命令行数据科学实用指南(全)原文:annas-archive.org/md5/78429ec9dbf0ff7d53ac5d7f76b47db2 译者:飞龙 协议:CC BY-NC-SA 4.0前言 本书介绍了使用 Bash Shell 命令行的强大功能。Bash 是最广泛使用的 Shell,几乎…

10 25

https://www.luogu.com.cn/training/607752#problems 推进至P10134 P12347 P13889 P10392 P6902 P6186 口胡 ABC到T5的时候由于没记初始的点导致可能出现到达 \(x\) 后绕一下再回来的情况,导致错误,导致耗了半个小时…

2025 年不锈钢护栏厂家最新推荐排行榜:含河道、桥梁防撞、201/316L 材质、景观灯光类产品,精选高性能优质品牌

引言 当前基础设施建设与房地产行业稳步发展,不锈钢护栏作为兼具安全防护与装饰功能的关键产品,市场需求持续攀升,但行业内品牌数量繁多、产品质量参差不齐,给采购者带来极大选择难题。部分小型厂商使用非标准原材…

日记17

今天正式进入多线程领域,用“卖票案例”重现了线程安全问题,再通过三种方案解决,终于理解了“并发”与“同步”的核心逻辑。核心实践:用三个线程模拟卖100张票,未加同步时出现“超卖”(卖出102张)和“重复卖”(…

架构师必备:限流方案选型(使用篇)

大家好,我是Java烘焙师。为了避免突增流量引起服务雪崩,需要对接口、存储资源做限流保护,根据系统负载情况设置合适的限流值。下面结合笔者的经验和思考,对主要限流方案的选型做一下总结,本篇先看如何使用,下一篇…

10月第一篇

《程序员修炼之道》阅读笔记:第一阶段 程序员的“职业身份觉醒” 《程序员修炼之道:从小工到专家》开篇便抛出一个振聋发聩的命题:“你是一名专业人士,还是一个代码工人?” 这句话像一把钥匙,瞬间打开了我对 “程…

2025 年青岛点焊机厂家最新推荐榜,聚焦技术实力与市场口碑深度解析螺母/自动/螺栓/储能/汽车零部件点焊机厂家推荐

引言 当前青岛点焊机市场品牌繁杂,产品在适配性、工艺水平、智能控制及稳定性上差异显著,部分产品还存在价格虚高、售后保障不足等问题。汽车制造、家用电器、五金制品等领域企业,对高性能、高性价比的中频、螺母、…