1、queue的设置

  hadoop2.0支持了queue,在hadoop程序里面进行queue的配置: 

  job.getConfiguration().set("mapred.job.queue.name", "your-queue-name");

2、reduce key-value中间的分隔符。

  首先得保证outputformart是Textoutputformat,默认的分割符是'\t',用以下语句在程序中进行配置:

  job.getConfiguration().set("mapred.textoutputformat.separator", "some-separator");

3、hive输出本地文件的分割符

  在0.10.0之前的hive版本儿输出到本地文件列之间的分隔符是看起来是“^A”,java读取的时候是"\\x01"

4、MR读取input输入不同地址,运用不同的mapper class

  org.apache.hadoop.mapreduce.lib.input.MultipleInputs.addInputPath(job, new Path(otherArgs[0]),TextInputFormat.class);

  org.apache.hadoop.mapreduce.lib.input.MultipleInputs.addInputPath(job, new Path(otherArgs[1]),TextInputFormat.class );

  用2.0以上版本儿的maven依赖。

5、hive的sort和order by在reduce步骤的区别

  sort 会执行多个reduce数据,输出多个reduce结果文件,每个文件之间进行排序

  order by只执行一个reduce,结果会排序。

  所以如果需要总体排序的话尽量不要用sort,用order by

6、不知道是所有的数据库只有hive有这个问题,hive的left、full join的时候,后面如果跟上where条件,就会自动识别成普通的join。

  官方解释:

will join a on b, producing a list of a.val and b.val. The WHERE clause, however, can also reference other columns of a and b that are in the output of the join, and then filter them out. However, whenever a row from the JOIN has found a key for a and no key for b, all of the columns of b will be NULL, including the ds column. This is to say, you will filter out all rows of join output for which there was no valid b.key, and thus you have outsmarted your LEFT OUTER requirement. In other words, the LEFT OUTER part of the join is irrelevant if you reference any column of b in the WHERE clause.

7、在hive中,concat_ws和cast XXX as string 联合起来比较好用。number_format会出现一些比较恶心的问题,比如如果是空值null的话会报错。
8、在hive中,case when XXX is null then '' end是不行的,必须得是 case when XXX is nul then '' else XXX end才能返回正确的结果。记住必须有end。
9、在hive中,如果用streaming的方式做map的时候,用的map的文件其中如果有问题的话,hive不会报错出来,会提示成功但是没有返回结果。所以在用streaming之前一定要先检查好map 、reduce的程序,得在python程序中加上try catche,然后错误日志需要在yarn的log里面查询:yarn -logs applicationId=XXXXX
10、在hive中,如果语句中用streaming的方式添加了第三方的程序来执行reduce,如果是python的话,在using里面要加上python XXX.py否则reduce会报错,为什么这样还不是很清楚,如果第三方程序用在map上面的话,就不需要加python。原因应该是这样的:如果是用第三方程序的话,如果不直接写明是map或者reduce的话,那么就不用写明是什么提供的,如果写明了是map还是reduce的话,就需要写明是什么提供的。
11、在hive中,如果source表里面的数据比较碎,导致map数量太多,则需要set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;set mapred.max.split.size=100000000;set mapred.min.split.size.per.node=100000000;set mapred.min.split.size.per.rack=100000000;这个数值是根据经验设置的,一般是文件较多的话,数值会较小。
12、hive-streaming报错代码为20001,可能的原因有三种情况:1、脚本本身没有main函数,2、脚本的编码没有转换到unix的格式,3、using ‘python XXX.py’。测试python 脚本的map的时候,可以用本地文件 cat XXX | python XXX.py
13、在向新表插入数据时报错:Currently the writer can only accept BytesRefArrayWritable。这个错误是hive的一个bug,在一个rcfile表select insert into 到另一个rcfile的表的时候会报错。解决方法就是,将目标表改为text的存储方式。另外网上也介绍了一个方法:ALTER TABLE table_name SET SERDEPROPERTIES('serialization.null.format'='-1'),经测试不好用。hive版本儿时:0.11
												

hadoop 、hive 的一些使用经验。的更多相关文章

  1. Hive创建表格报【Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException】引发的血案

    在成功启动Hive之后感慨这次终于没有出现Bug了,满怀信心地打了长长的创建表格的命令,结果现实再一次给了我一棒,报了以下的错误Error, return code 1 from org.apache ...

  2. FineReport中hadoop,hive数据库连接解决方案

    1. 描述 Hadoop是个很流行的分布式计算解决方案,Hive是基于hadoop的数据分析工具.一般来说我们对Hive的操作都是通过cli来进行,也就是Linux的控制台,但是,这样做本质上是每个连 ...

  3. hive 使用where条件报错 java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.ppd.ExprWalkerInfo.getConvertedNode

    hadoop 版本 2.6.0 hive版本 1.1.1 错误: java.lang.NoSuchMethodError: org.apache.hadoop.hive.ql.ppd.ExprWalk ...

  4. hadoop+hive使用中遇到的问题汇总

    问题排查方式  一般的错误,查看错误输出,按照关键字google 异常错误(如namenode.datanode莫名其妙挂了):查看hadoop($HADOOP_HOME/logs)或hive日志 h ...

  5. Hadoop Hive基础sql语法

     目录 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件映射为一张数据库表,并提供完整的 ...

  6. Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递

    http://niuzhenxin.iteye.com/blog/1706203   Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql.postgresql.. ...

  7. Hadoop Hive与Hbase整合+thrift

    Hadoop Hive与Hbase整合+thrift 1.  简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句 ...

  8. Hadoop Hive sql语法详解

    Hadoop Hive sql语法详解 Hive 是基于Hadoop 构建的一套数据仓库分析系统,它提供了丰富的SQL查询方式来分析存储在Hadoop 分布式文件系统中的数据,可以将结构 化的数据文件 ...

  9. Hadoop Hive与Hbase关系 整合

    用hbase做数据库,但因为hbase没有类sql查询方式,所以操作和计算数据很不方便,于是整合hive,让hive支撑在hbase数据库层面 的 hql查询.hive也即 做数据仓库 1. 基于Ha ...

随机推荐

  1. 死磕salt系列-salt grains pillar 配置

    grains 和 pillar 对比: Grains:存放静态数据,主要存储客户端的主机信息,重启grains会刷新. Pillar: 处理敏感数据, 处理差异性的文件. Grains数据系统 sal ...

  2. gluoncv voc_detection

    https://github.com/zhreshold/gluon-cv/commit/73b3986aaa2e0d0e6f3f428c12072e3a9d29905e gluoncv可能版本还没更 ...

  3. Qt中QScrollArea类的简单使用心得

           平台:windows 64位        Qt版本:5.5.1 MinGW 32bit 根据自己目前的需求简单说下怎么在QScrollArea滚动窗口中实现多个控件的滚动显示,先看看最 ...

  4. EF Core 中DbContext不会跟踪聚合方法和Join方法返回的结果,及FromSql方法使用讲解

    EF Core中: 如果调用Queryable.Count等聚合方法,不会导致DbContext跟踪(track)任何实体. 此外调用Queryable.Join方法返回的匿名类型也不会被DbCont ...

  5. VB.NET & Visual Basic

    当看到VB.NET者这本书籍的时候,翻开文件夹唯一的感受就是:这不和VB一样吗?究竟有什么差别呢? 1)版本号: 又一次回想VB,能够发现事实上他是Microsoft退出的基于Windows操作系统环 ...

  6. 原生js创建模态框

    1.效果图如下: 2.代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  7. iOS audio不支持循环播放

    解决办法:监听播放完成事件(注意点,audio标签不能设置循环播放,去除标签 loop="loop"或者 loop="false",不然不走播放完成事件) $( ...

  8. 正方形(类型:枚举、一级、C++)

    题目描述 有一个正方形,四个角的坐标分别是(1,-1),(1,1),(-1,-1),(-1,1).写一个程序,判断一个给定的点(x,y)是否在这个正方形内(包括正方形边界),如果在正方形内输出“Yes ...

  9. docker 入门 (二)基本操作

    这一篇讲docker的基本操作. 请自行安装docker到自己的电脑上. 镜像的获取 要获取镜像,最简单的当然是从仓库去获取,docker的官方网站很不好练,其他的可选项有docker中国官网,阿里镜 ...

  10. 升级Xcode10报错问题修复

    Xcode10 问题1 报文件重复 File--> Workspace Settings --> Build System 修改为Legacy Build System (默认是New B ...