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. WebKit由三个模块组成-Webkit模块介绍

    2.       Webkit 源代码由三大模块组成: 1). WebCore, 2). WebKit, 3). JavaScriptCore. WebCore:排版引擎核心,WebCore包含主要以 ...

  2. BZOJ3224:普通平衡树(Splay)

    Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相 ...

  3. C语言文件操作总结

    文件的打开操作 fopen 打开一个文件,操作文件指针FILE * 文件的关闭操作 fclose 关闭一个文件 文件的读写操作 fgetc 从文件中读取一个字符 fputc 写一个字符到文件中去 fg ...

  4. Odoo中要根据某字段值作为条件判断值,但又不想在界面显示

    在视图标签中包含这个field(包含这个字段才可以使用该字段),但其invisible属性设置为1,即:该字段不可见. <field name="字段" invisible= ...

  5. 随手练—— 洛谷-P2945 Sand Castle(贪心)

    题目链接:https://www.luogu.org/problemnew/show/P2945 (原题 USACO) 要求钱最少,就是试着让M和B的离散程度最小(我自己脑补的,就是总体更接近,我不知 ...

  6. redis安装及测试

    http://jingyan.baidu.com/article/9113f81b0333e12b3214c7a8.html 下载地址:http://git.oschina.net/bingoPure ...

  7. 移动端h5列表页上拉加载更多

    背景 上星期公司要求做一个回收书籍的h5给安卓用,里面有一个功能是回收记录列表.设计师那边出的稿子是没有要求分页或者是上拉刷新的,但是众所周知,列表页数据很多的情况下,h5加载是很慢的.所以我一开始是 ...

  8. Linux Notes | Linux常用命令行笔记

    [ show all running processes ] (1) ps -aux | less 'ps' means: Process Status The -a option tells ps ...

  9. JNI由浅入深_9_JNI 异常处理

    1 .本地代码中如何缓存和抛出异常 下面的代码中演示了如何声明一个会抛出异常的本地方法.CatchThrow这个类声明了一个会抛出IllegalArgumentException异常的名叫doit的本 ...

  10. HTML5手机端拍照上传

    1.accept="image/*" capture="camera" 自动调用手机端拍照功能 accept="image/*" captu ...