hql(hive sql)中的join及踩过的坑

这篇具有很好参考价值的文章主要介绍了hql(hive sql)中的join及踩过的坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 几种join方式
join
join对应于inner join 内连接。
当多张表进行join的时候,所有表中与on条件中匹配的数据才会显示。
hql(即hive sql)的on子句中只支持and,不支持 or,也不支持null的对比。

left outer join
左外连接,也称为左连接。
以左表为基准,如果右表有条件匹配的数据,则显示,否则显示为null

right outer join
与左外连接相反,以右表为基准,若左表有条件匹配的数据,则显示,否则显示为null

full outer join
全外连接,返回所有表中满足where条件的数据,不满足的以null代替。

left semi join
左半连接,查询出满足on条件的左表的数据。左表的记录在右表中找到对应的记录,则右表停止扫描。
selectwhere子句不能引用右表的字段。

right semi join
右半连接,类似左半连接。hql不支持right semi join

笛卡尔积
左表数据乘以右表数据。使用join,(跟内连接的区别貌似是没有on条件)(2024年注释:真的是join吗?)

union
联合操作

2 避免踩坑
left outer join
左外连接的结果条数应该与左表的条数一样多。如果右表关联的字段存在重复时,会让结果条数变多。

full outer join
不要把右表的 where条件写在 on 语句中

join特别慢
reduce阶段特别慢,可能发生数据倾斜,或者join on字段存在null值。

selectnull
做完full outer join后,想要选择非空的列值作为结果,可以使用coalesce

SELECT COALESCE(table1.id, table2.id) AS id,
table1.name,table1.family,table2.orderr,table2.countt
FROM table1 FULL OUTER JOIN table2
ON table1.id = table2.id

(网上还有一种用法是isnull,没有证实过

SELECT ISNULL(table1.id, table2.id) AS id,
table1.name,table1.family,table2.orderr,table2.countt
FROM table1 FULL OUTER JOIN table2
ON table1.id = table2.id

order by & sort by
order by对所有数据在一个reduce中全排序。如果设置hive.mapred.mode=strict,在全排序时必须结合limit使用。
sort by 在每个reduce中进行排序(局部排序)文章来源地址https://www.toymoban.com/news/detail-812371.html

到了这里,关于hql(hive sql)中的join及踩过的坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记录一下postman汉化踩过的坑

    postman安装后会频繁的进行更新,每次更新后我们会发现,postman界面就会回到原来的英文界面。这是由于汉化包的版本和postman的版本不一致导致的。 postman汉化包的更新滞后于postman的更新,如果要成功将postman汉化,就要下载以前的版本保证postman的版本和汉化包的版本一致。

    2024年02月15日
    浏览(32)
  • docker+selenium+firefox | 我踩过的坑

    为了实现SSPUBot不在我电脑上部署,我只能将其制成Docker。 要知道SSPUBot在开发的时候用了selenium+Firefox的想法开发,所以Docker里面必须要有Firefox,结果这就让见识到了最顽固的错误 selenium.common.exceptions.WebDriverException: Message: Process unexpectedly closed with status 255 我们还是省略我找的

    2024年01月22日
    浏览(41)
  • Spark搭建日志,记录一些踩过的坑

    本人在Centos中使用三个虚拟机(node1,node2,node3)搭建hadoop与Spark分布式环境(具体见后记中的Hadoop安装),本文记录一些踩过的坑 解决办法:sudo chown -R 用户名 /spark(spark或者hadoop所在目录) 原理:文件的初始所有者不是用户名(如root),要把spark目录的初始所有者更换为自

    2024年03月14日
    浏览(73)
  • 关于python的mediapipe库踩过的坑

      大家好,我是csdn的博主: lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主 lqj_本人擅长微信小程序,前端,vue,等方面的知识 https://blog.csdn.net/lbcyllqj?spm=1000.2115.3001.5343 哔哩哔哩欢迎关注: 小淼前端 小淼前端的个人空间_哔哩哔哩_bilibil

    2024年01月17日
    浏览(26)
  • 一卡通水控电控开发踩过的坑

    最近在做一个项目,是对接一卡通设备的。我一开始只拿到设备和3个文档开局。不知道从哪下手。一步一步踩坑过来。踩了很多没有必要的坑,写出来给有用的人吧。 有个读卡器,一开始什么软件也不提供。我都不知道是干嘛用的。后来问客服才知道有一个测试软件。我真

    2024年01月23日
    浏览(44)
  • 微信小程序哪些wifi+tcp+udp踩过的坑

    1、wx.startWifi 开启wifi模块 2、如果需要展示wifi列表则调用 wx.getWifiList(Object object) 注意: 请求获取 Wi-Fi 列表。wifiList 数据会在 onGetWifiList 注册的回调中返回。 Android 调用前需要 用户授权 scope.userLocation。 iOS 上将跳转到系统设置中的微信设置页,需要用户手动进入「无线局域网

    2024年02月15日
    浏览(29)
  • 「AntV」X6开发实践:踩过的坑与解决方案

    长期更新版文档请移步语雀(「AntV」X6开发实践:踩过的坑与解决方案 (yuque.com)) --Recent update:2024-01-05 相信你们在开发中更多的需求是需要自定义拖拽源,毕竟自定义的功能扩展性高一些,而且可以根据你的业务需求灵活设置。自定义拖拽的优点就是:万物皆可成为拖拽源,

    2024年02月08日
    浏览(80)
  • 真人踩过的坑,告诉你避免自动化测试常犯的10个错误

    虽然从自己的错误中学习也不错,但从别人的错误中学习总是更好的。 作为一个自动化测试人员,分享常见的容易犯的10个错误,可以从中吸取教训,引以为鉴。 一、必要时才自动化 新人小王接到为Web应用程序自动化测试脚本的任务时,既高兴又紧张,因为这是他进入团队

    2023年04月08日
    浏览(28)
  • vue h5player.min.js对接海康威视,踩过的坑

    一、播放的视频无法占满全屏 1、JSResize()接口内部做了50ms防抖动,调用不会立即生效,延时50ms获取最新大小设置窗口。 2、h5player内部会在网页缩放的时候自适应父容器大小,但是在单独变更父容器大小的时候无法自适应,需要重新设置大小 3、出现不生效的问题一般是有单

    2024年02月14日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包