文档章节

reduce输出结果到sqlserver数据库异常

小黑放大
 小黑放大
发布于 2015/01/28 17:29
字数 362
阅读 25
收藏 0
点赞 0
评论 0

最近在做个hadoop统计的小项目,结果需要输出到sqlserver数据,其中遇到一些小问题

在map、reduce进行的比较顺利,因为数据比较规范,很快都搞定了

在运行时出现以下情况

遇到这种情况,第一时间想到是因为结点上驱动包的问题

对于缺少驱动的问题,有两种方案

1、在集群的每个结点${HADOOP_HOME}/lib下添加驱动包,并重启集群。这是最原始的方法,因为需要重启集群,不建议使用

2、先把驱动包上传到集群中

hadoop fs -put /lib/sqljdbc.jar

然后在新建Job之前添加到classpath环境中

Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
//添加到classpath
DistributedCache.addFileToClassPath(new Path("/lib/sqljdbc.jar"), conf, fs);

//必须在新建JOB之前执行,这样才能在初始化 加载数据库驱动、以及连接数据库 传入到conf中供JOB使用
DBConfiguration.configureDB(conf, "com.microsoft.sqlserver.jdbc.SQLServerDriver", 
    "jdbc:sqlserver://192.168.240.1:1433;DatabaseName=dbname", "sa", "123456");
Job job = new Job(conf, "statistic");

job.setJarByClass(DbnameDownedStatistic.class);
job.setMapperClass(StatisticMap.class);
job.setReducerClass(StatisticReducer.class);

job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);

job.setOutputKeyClass(StatisticDBWritable.class);
job.setOutputValueClass(Text.class);
job.setNumReduceTasks(4);

job.setInputFormatClass(TextInputFormat.class);
job.setOutputFormatClass(DBOutputFormat.class);

FileInputFormat.addInputPath(job, new Path("hdfs://node1:9000/user/hadoop/statictic/"));
String[] fileds = new String[] { "name","down", "count" };
DBOutputFormat.setOutput(job, "statistic", fileds);

System.exit(job.waitForCompletion(true) ? 0 : 1);


这里需要注意的是

DBConfiguration.configureDB();

这个方法必须在new Job()之前执行,这样conf才能加载到驱动包,才能保证其他结点也能加载到驱动包

© 著作权归作者所有

共有 人打赏支持
小黑放大
粉丝 4
博文 19
码字总数 13185
作品 0
武汉
程序员
SQL 2017 SQLPS执行Ad-SqlAvailabilityDatabase异常

SQL Server 2017 SQLPS执行Ad-SqlAvailabilityDatabase遇到问题 这个错误简直逆天,查了下该cmdlet的帮助 常规参数里有Debug。 执行Debug,输出如下: PS C:Windowssystem32> Add-SqlAvailab...

UltraSQL ⋅ 05/23 ⋅ 0

使用 Informatica 做将字符串转换成日期

数据源为 SQLServer 数据库,且源字段 varchar 类型。需要抽取到 Oracle 数据库中,并且转换为 date 类型。 由于源表和目标表是两种不同的数据库,且数据类型不同,所以无法在源表限定转换器...

DreamOver ⋅ 06/08 ⋅ 0

MSSQL-Server On Docker

安装先决条件: • 适用于支持的任一 Linux 分发版的 Docker 引擎 1.8 以上版本,或适用于 Mac/Windows 的 Docker。 有关详细信息,请参阅 Install Docker(安装 Docker)。 • 至少 2 GB 的...

jwenshan ⋅ 05/30 ⋅ 0

sqlserver,你的delete语句表名为什么不能别名?

前几天写了几行sql,用于清除环境里面的脏数据,平时开发用的是oracle数据库,看了下里面的语句,处理concat字符串拼接函数看起来稍微特殊点,其它都没有啥问题。百度了下,cancat可以用在收...

heshifk ⋅ 04/23 ⋅ 0

SQLServer 开启远程访问,也可逆向思维进行关闭

为了可以通过TCP/IP协议远程访问SQLServer数据库,需要做以下几点: 在SQLServer所运行的服务器上,我们必须找到SQLServer所侦听的端口然后添加到WIndows防火墙的【允许入站】中。 一:需要添...

easonjim ⋅ 2015/08/25 ⋅ 0

SQL Server on Linux 2017(初识 LINUX下的SQL-SERVER功能应用)

安装环境Centos7: 官方安装必要條件: 必须 RHEL 7.3 或 7.4 机至少 2 GB的内存 1、设置mssql_server的YUM官方源: curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsof...

jwenshan ⋅ 05/28 ⋅ 0

SQLserver 关键字作列名

在用 Informatica 从 SQLserver 中抽取数据时碰到这样一个错误: 实际上,这是一个非常简单的 mapping,从源表直抽数据至目标表,没有转换逻辑: 从 Monitor 的 session log 中获取详细的 in...

DreamOver ⋅ 06/07 ⋅ 0

Mybatis 分页插件 PageHelper 5.1.4 发布

如果你也在用 Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。 该插件目前支持以下数据库的物理分页 Oracle Mysql MariaDB SQLite Hsqldb PostgreSQL DB2 SqlServer(2005+) I...

Liuzh_533 ⋅ 04/23 ⋅ 0

各个数据库的无order by选取某一列的默认排序

Oracle: oracle对无order by的语句返回的结果不进行排序,oracle此时的处理方式是按照数据的物理存储顺序来读取数据。因为rowid是每行数据的地址,所以有时候看起来会像是使用rowid排序的。但...

Aeroever ⋅ 04/25 ⋅ 0

SQL Server 2008R2 或更高版本数据库向低版本降级方法

SQL Server 2008R2 或更高版本数据库向低版本降级方法 前言 SQL Server2008R2或更高版本的数据库mdf文件无法直接被低版本SQL Server打开,但可以采取生成脚本的方式曲线降级,下面就记录了数...

幸运券发放 ⋅ 05/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部