视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Hive常见问题与技巧
2020-11-09 15:33:55 责编:小采
文档


1Q: 是否有像类于phpmyadmin一样的hive查询客户端,能以界面的方式查询hive语句和导出数据 A: 有的,客户端的话可以使用squirrel来连接hive,squirrel是一个通用的数据库查询客户端,还有有一个开源项目phphiveadmin也不错, web方式访问hive,这里也有一个h

1Q: 是否有像类似于phpmyadmin一样的hive查询客户端,能以界面的方式查询hive语句和导出数据

A: 有的,客户端的话可以使用squirrel来连接hive,squirrel是一个通用的数据库查询客户端,还有有一个开源项目phphiveadmin也不错,

web方式访问hive,这里也有一个hive web client(https://github.com/lalaguozhe/hiveweb-1)

2Q: 执行语句时候,能否控制reducer的个数

A: 可以在执行hive语句之前先 set mapred.reduce.tasks=

3Q: 是否可能在输出的时候在结果第一行打印列名

A: 可以在执行hive语句之前先 set hive.cli.print.header=true;

4Q: Hive是否支持跨数据库查询,比如database arch的table1和database algo的table2 进行join

A: 可以,只要有用户有这两张表的select权限即可,用户需要用“database.table”的方式来指定数据库下的表

5Q: Hive是否有内置的函数,可以对输出的数据进行处理

A: Hive提供了丰富的内置函数,参见https://cwiki.apache.org/Hive/languagemanual-udf.html,

用户也可以自己实现自定义的UDF方法来满足更复杂的查询需求

6Q: Hive支持exist in么?

A: 不支持,但是可以通过改写语句达到相同的效果,比如对于查询语句:

SELECT a.key, a.value FROM a WHERE a.key in (SELECT b.key FROM B);

可以改写成:

SELECT a.key, a.val

FROM a LEFT SEMI JOIN b on (a.key = b.key)

PS:上述答案过时了,目前 hive 已经支持 in 查询了。

http://blog.csdn.net/yfkiss/article/details/8073608

7Q:Hive是否支持本地执行模式

A:Hive支持本地执行模式,当数据量小的时候,本地执行比提交到集群上执行效率提升很大

set hive.exec.mode.local.auto=true(默认false)

当一个job满足如下条件才能真正使用本地模式:

1.job的输入数据大小必须小于参数hive.exec.mode.local.auto.inputbytes.max(默认值128MB)

2.job的map处理的文件数大于参数hive.exec.mode.local.auto.input.files.max(默认值4)

3.job的reduce数必须为0或者1,不管是用户设置的还是系统推测出来的

用参数hive.mapred.local.mem(默认0)来设置local mode下mapper和reducer task jvm heap size

8Q: 关键词UNION ALL的用法

A:The number and names of columns returned by each select_statement has to be the same. Otherwise, a schema error is thrown.

UNION ALL两边的字段名,和字段数都必须一致,可以用as xxx来统一字段名,并且目前UNION ALL只能作为子查询。

9Q:hive left outer join的问题:where 与 on 条件的区别

http://blog.csdn.net/lalaguozhe/article/details/94947

10Q:其它技巧请见:

http://my.oschina.net/leejun2005/blog/121945

11、对于 jar 包调用失败 NullPointerException 的问题:

FAILED: Error in metadata: java.lang.NullPointerException
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

你可能需要再 hive-site.xml 中添加 jar 的路径:

具体参考:http://abloz.com/2013/03/28/the-hive-execute-statements-times-nullpointerexception.html

1 <property>

2 <name>

3 hive.aux.jars.path

4 name>

5 <value>

6 file:///home/june/soft/hive-0.9.0-bin/lib/hive-json-serde.jar

7 value>

8 property>

REF:http://blog.csdn.net/lalaguozhe/article/details/9081971

下载本文
显示全文
专题