• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Hive 常见问题与技巧

mysql 搞代码 4年前 (2022-01-09) 23次浏览 已收录 0个评论

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

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

A: 有的,客户端的话可以使用squirrel来连接hive,squirrel是一个通用的数据库查询客户端,还有有一本文来源gao($daima.com搞@代@#码(网个开源项目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.gaodaima.com/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.gaodaima.com/lalaguozhe/article/details/9498947

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.gaodaima.com/lalaguozhe/article/details/9081971


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Hive 常见问题与技巧

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址