當(dāng)前位置:
首頁(yè) >
hive报错return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
發(fā)布時(shí)間:2023/12/8
51
豆豆
生活随笔
收集整理的這篇文章主要介紹了
hive报错return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
場(chǎng)景:計(jì)算一年中每一天的數(shù)據(jù),每一天的取值是前一年或者半年的平均值,所以我有兩張臨時(shí)表,第一張存放主體的一年中每一天的數(shù)據(jù),第二張存放主體近兩年的每一天對(duì)應(yīng)的數(shù)據(jù),第一張表左連接第二張表,這樣子進(jìn)行窗口函數(shù)計(jì)算即可。
select h1.*,h3.volume,h3.vwap,avg(h3.turnoverval)over(PARTITION by h1.TRADINGITEMID order by h1.natualday asc rows BETWEEN 364 PRECEDING and CURRENT ROW) as turnoverval from dp.tmp5 h1left join dp.tmp6 h3 on h1.TRADINGITEMID = h3.TRADINGITEMID and h1.natualday=h3.pricingdate and h3.volume!=0 and h3.vwap!=0但是這樣子確報(bào)錯(cuò),語(yǔ)法沒(méi)有問(wèn)題,單純 avg 會(huì)有問(wèn)題,如果求max 后者其他就不會(huì)報(bào)錯(cuò)。嘗試了很久,而跑2019年、2020年的數(shù)據(jù)是沒(méi)有問(wèn)題的,然而跑2018年是會(huì)報(bào)錯(cuò)的,預(yù)估是臟數(shù)據(jù)導(dǎo)致的,但是不管怎樣查詢都查不出數(shù)據(jù)的問(wèn)題, 最后發(fā)現(xiàn)需要把 h1的非交易日排除掉才行正常執(zhí)行(這樣子就不能準(zhǔn)確的計(jì)算前180天的平均值了)
最后想到的辦法是求出sum 和 count,確實(shí)可行
select h1.secucode,h1.natualday,h3.volume,h3.vwap, h3.volume * h3.vwap ,SUM(h3.volume * h3.vwap)over(PARTITION by h1.secucode order by h1.natualday asc rows BETWEEN 180 PRECEDING and CURRENT ROW) as turnoverval,count(h3.volume * h3.vwap )over(PARTITION by h1.secucode order by h1.natualday asc rows BETWEEN 180 PRECEDING and CURRENT ROW) as turnovercntfrom dp.tmp5 h1left join dp.tmp_ciqpriceequity h3 on h1.secucode = h3.secucode and h1.natualday=h3.pricingdate總結(jié):
其實(shí)工作中確實(shí)會(huì)遇到很多莫名其妙的問(wèn)題,關(guān)鍵問(wèn)題還是對(duì)核心理解的不夠深,不過(guò)深入理解也是不太現(xiàn)實(shí)的。這種情況下最好能夠排查出出現(xiàn)問(wèn)題的點(diǎn),找到之后一般是源數(shù)據(jù)不符合接口導(dǎo)致的,要不然就修改源,要不然就替換接口。總之對(duì)于理論能夠?qū)崿F(xiàn)的邏輯總歸是有辦法的。
總結(jié)
以上是生活随笔為你收集整理的hive报错return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 解决Execution Error, r
- 下一篇: Hive查询报错,return code