初体验SQL Server 2012的Hadoop连接器

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介:

本文讲的是初体验SQL Server 2012的Hadoop连接器,电影《天下无贼》中一句经典的“21世纪什么最贵?人才!”,体现了以人为本的价值观。而实际上,深处大数据时代的我们,是不是也应该幽默一回:“21世纪什么最值钱?数据!”。对于企业而言,除了人才,数据也是最重要资产之一。

  “大”数据的价值

  面对如此庞大的数据,企业该如何挖掘其中的商机呢?这里给出一些应用场景,简单梳理一下大数据的价值所在:

  ·在以用户为中心的SNS网络中,通过大数据的分析,可以感知客户的情绪(正面,负面)变化,从而分析预测用户对公司产品的评价,以及更加关注哪些产品等等。

  ·在工业设备制造中,传感器数据有利于监控设备运营,指定检修时间表等。

  ·GPS时空数据有有利于预测用户的位置,未来的消费欲望等。

  ·RFID数据有利于物流系统及时跟踪库存量。

  Hadoop的“大”数据优势

  实际上,在数据时代,人们面临更多的是离散的结构化数据,与之有关的是关系数据库的大量运用,例如微软的SQL Server。而在大数据时代,除了关系数据之外,人们还面临着大量的非结构数据,而这正是Hadoop的价值所在。作为一个分布式系统基础架构,Hadoop支持对大量数据进行分布式处理。对于开发者而言,Hadoop的威力在于:用户无需了解分布式底层细节,即可使用Hadoop开发分布式程序,充分利用集群的高性能计算和存储资源。现如今,作为Apache基金会的开源项目,Hadoop无疑是大数据领域的佼佼者。

  什么是SQL Server 2012的Hadoop连接器

  作为计算时代的引领者,微软深知,云计算离不开大数据,而SQL Server 2012正是微软云计算数据服务战略的重要步骤,它融合了Hadoop 连接器技术,让SQL Server 也跨入了非结构化大数据领域。

  图1显示的SQL Server 2012的体系结构。不难看出,SQL Server 2012是一个支持结构化、非结构化和实时数据的完整数据平台。有了Hadoop的加盟,SQL Server 2012可以轻而易举地支持企业级Hadoop分布式非结构化数据。

初体验SQL Server 2012的Hadoop连接器
▲图 1. SQL Server 大数据框架

  具体来说,Hadoop连接器提供了Hadoop非结构数据与SQL Server结构化数据之间的双向迁移能力。而Hive ODBC驱动程序则支持Hive和Microsoft BI 工具(如PowerPivot和Power View)的直接连接,另外,Microsoft Excel与Hadoop的数据交互也可通过Hive附加程序实现。

  除了Hadoop连接器,另一个连接器SQL Server Parallel Data Warehouse (PDW) connector for Hadoop,也提供Hadoop与SQL Server PDW数据之间的双向迁移。

  使用Hadoop连接的最大价值在于:云计算客户可以自由地在结构化数据与非结构化数据之间来回穿梭。


  体验SQL Server 2012的Hadoop连接器

  前面提到,Hadoop是一个Apache基金会支持的开源分布式大数据处理框架,能并行处理不同节点的大数据。而作为Hadoop的文件系统,HDFS为用户应用提供了文件级存储支持。

  SQL Server支持的Hadoop连接器的基础是Sqoop连接器,主要目标是提供SQL Server与Hadoop之间的数据转换,即结构化数据与非结构化数据之间的双向数据迁移。

  下面,结合SQL Server 2012与Hadoop的双向数据转换,我们简单演示以下SQL Server Hadoop连接器的功能。

  1. 将SQL Server 2012数据导入到Hadoop

  Hadoop存储数据的介质包括文件系统HDFS与数据库Hive两部分。因此,SQL Server 2012导入到Hadoop也分为两部分。

  清单1演示的是将SQL Server 2012中名叫testdb的数据库中的testtable表导入到Hadoop的文件系统HDFS中。

  清单1

$bin/sqoop import --connect 'jdbc:sqlserver://192.168.0.1;username=dbuser;password=dbpasswd;database=testdb' --table testtable --target-dir /data/testData

  前面提到,SQL Server Hadoop连接器基于Sqoop,因此,这里的命令为sqoop,对应的导入参数为import –connect。作为源数据库,jdbc:sqlserver 的URL指定了SQL Server 2012对应的主机名192.168.0.1,数据库用户名dbuser与密码dbpasswd。与此同时,还指定了数据库名称testdb以及对应的数据表testtable。而作为目标Hadoop,这里指定了HDFS的目录——/data/testData。

  为了加速导入,我们可以采用并行的方式,如清单2所示:

  清单2

$bin/sqoop import --connect 'jdbc:sqlserver://192.168.0.1;username=dbuser;password=dbpasswd;database=testdb' --table testtable --target-dir /data/testData --split-by id -m 4

  清单2是在清单1的基础上,选择-m选项来启动4个进程,同时进行数据的导入操作。--split选项则指定基于数据表中的哪一列进行拆分。我们简单解释下其中的并行工作原理。

  a)首先,SQL Server连接器会执行一个查询

select max(id) as max, select min(id) as min from test

  通过查询,获取到需要拆分字段(id)的最大值和最小值,假设分别是1和1000。

  b) 然后,Sqoop会根据需要并行导入的数量,进行拆分查询,并行导入将拆分为如下4条SQL同时执行:

select * from test  where 0 <= id < 250;
select * from test  where 250 <= id < 500;
select * from test  where 500 <= id < 750;
select * from test where 750 <= id < 1000;

  这样,就达到了并行导入的目的。

  除了默认的文本文件,HDFS还支持二进制文件,也称为序列化文件sequencefile。清单3是在清单1的基础上,使用--as-sequencefile选项,指定导出文件格式为二进制文件,而非清单1所示的文本文件。

  清单3

$bin/sqoop import --connect 'jdbc:sqlserver://192.168.0.1;username=dbuser;password=dbpasswd;database=testdb' --table testtable --target-dir /data/testData --as-sequencefile

  以上3个例子都是描述SQL Server 数据库与HDFS文件的转换。清单4则是描述SQL Server数据库与Hive数据库的转换,即结构化数据库向非结构化数据库的数据导入。

  清单4

$bin/sqoop import --connect 'jdbc:sqlserver://192.168.0.1;username=dbuser;password=dbpasswd;database=testdb' --table testtable --target-dir /data/testData –hive-import

  注意,在执行该命令之前,请确保环境变量HIVE_HOME(即Hive的安装目录)被正确设置。

  图2显示的是将SQL Server数据库GameWeibo的数据表blacklist导入到Hadoop当中,后台启动MapReduce作业执行导入操作。

体验SQL Server 2012的Hadoop连接器

  可以通过Hadoop提供的Web视图,查看MapReduce导入作业的ID、名称、作业状态等信息,如图3所示。

体验SQL Server 2012的Hadoop连接器

  现在,可以查看Hadoop的HDFS文件中的数据,如图4所示。

体验SQL Server 2012的Hadoop连接器


  2. 将Hadoop数据导出到SQL Server 2012

  很显然,这一部分的内容与前一部分的内容正好相对,因此,对应的导出命令为export。

  清单5显示的将Hadoop的文件系统HDFS中的/data/testData目录的数据导出到SQL Server 2012中名叫testdb的数据库中的testtable表中。与清单1相比,除了参数从import改成export,--target-dir也变成了--export-dir。

  清单5

$bin/sqoop export --connect 'jdbc:sqlserver://192.168.0.1;username=dbuser;password=dbpasswd;database=testdb' --table testable  --export-dir /data/testData

  清单6是清单2的逆过程,这里不做过多解释。

  清单6

$bin/sqoop export --connect 'jdbc:sqlserver://192.168.0.1;username=dbuser;password=dbpasswd;database=testdb' --table testable  --export-dir /data/testData –m 4

  对于其它Export命令操作,读者可使用Import命令的逆向思维来思考,这里不再举例赘述。

  为了方便读者理解,以下给出的是SQL Server Hadoop连接器最常用13命令的解释说明。

序号      

命令      

描述说明      

1      

impor      

从关系型数据库中导入数据(来自表或者查询语句)HDFS      

2      

export      

HDFS中的数据导入到关系型数据库中      

3      

codegen      

获取数据库中某张表数据生成Java并打成jar      

4      

create-hive-table      

创建Hive      

5      

eval      

查看SQL执行结果      

6      

import-all-tables      

导入某个数据库下所有表到HDFS      

7      

job      

列出所有数据库名      

8      

list-databases      

列出某个数据库下所有表      

9      

list-tables      

查看帮助      

10      

merge      

查看版本      

11      

metastore      

从关系型数据库中导入数据(来自表或者查询语句)HDFS      

12      

help      

HDFS中的数据导入到关系型数据库中      

13      

version      

获取数据库中某张表数据生成Java并打成jar      

  小结

  总之,有了Hadoop连接器的支持,SQL Server 2012是一个可支持结构化、非结构化和实时的数据的完整数据库平台,用户实现了结构化数据与非结构化数据的双向迁移。

作者: 李培帅

来源: IT168

原文标题:初体验SQL Server 2012的Hadoop连接器


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
2月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
282 3
|
2月前
|
SQL 数据库 索引
SQL语句实现投影连接:方法与技巧详解
在SQL数据库查询中,投影和连接是两个核心概念
|
2月前
|
SQL Java 数据库连接
如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
【10月更文挑战第6天】在代码与逻辑交织的世界中,我从一名数据库新手出发,通过不断探索与实践,最终成为熟练掌握JDBC的开发者。这段旅程充满挑战与惊喜,从建立数据库连接到执行SQL语句,再到理解事务管理和批处理等高级功能,每一步都让我对JDBC有了更深的认识。示例代码展示了如何使用`DriverManager.getConnection()`连接数据库,并利用`PreparedStatement`执行参数化查询,有效防止SQL注入。
132 5
|
2月前
|
SQL 数据库 决策智能
SQL语句实现投影连接详解
在SQL中,投影(Projection)和连接(Join)是数据查询和处理中非常重要的两个操作
|
2月前
|
SQL 存储 数据可视化
SQL 数据库大揭秘:连接数字世界的魔法桥梁
在数字化时代,数据如繁星般璀璨,而 SQL 数据库则像强大的引力场,有序汇聚、整理和分析这些数据。SQL 数据库是一个巨大的数字宝库,装满各行各业的“宝藏”。本文将带你探索 SQL 数据库在电商、金融、医疗和教育等领域的应用。例如,在电商中,它能精准推荐商品;在金融中,它是安全卫士,防范欺诈;在医疗中,它是健康管家,管理病历;在教育中,则是智慧导师,个性化教学。此外,还将介绍如何利用板栗看板等工具实现数据可视化,提升决策效率。
|
2月前
|
SQL 开发框架 .NET
ASP连接SQL数据库:从基础到实践
随着互联网技术的快速发展,数据库与应用程序之间的连接成为了软件开发中的一项关键技术。ASP(ActiveServerPages)是一种在服务器端执行的脚本环境,它能够生成动态的网页内容。而SQL数据库则是一种关系型数据库管理系统,广泛应用于各类网站和应用程序的数据存储和管理。本文将详细介绍如何使用A
93 3
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
Hadoop-12-Hive 基本介绍 下载安装配置 MariaDB安装 3台云服务Hadoop集群 架构图 对比SQL HQL
87 3
|
2月前
|
SQL 分布式计算 Java
Hadoop-11-MapReduce JOIN 操作的Java实现 Driver Mapper Reducer具体实现逻辑 模拟SQL进行联表操作
Hadoop-11-MapReduce JOIN 操作的Java实现 Driver Mapper Reducer具体实现逻辑 模拟SQL进行联表操作
50 3
|
2月前
|
SQL 数据库 索引
SQL语句实现投影连接:技巧与方法详解
在SQL数据库操作中,投影连接(Projection Join)是一种常见的数据查询技术,它结合了投影(Projection)和连接(Join)两种操作
|
2月前
|
SQL 存储 监控
串口调试助手连接SQL数据库的技巧与方法
串口调试助手是电子工程师和软件开发人员常用的工具,它能够帮助用户进行串口通信的调试和数据分析