日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hive -e和hive -f的区别(转)

發布時間:2023/12/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hive -e和hive -f的区别(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

大家都知道,hive -f 后面指定的是一個文件,然后文件里面直接寫sql,就可以運行hive的sql,hive -e 后面是直接用雙引號拼接hivesql,然后就可以執行命令。

但是,有這么一個東西,我的sql當中有一個split切割,暫且先不管這個分割的業務邏輯是什么,但是當中有一段是用小數點(.)來分割字符串的,因為小數點是一個比較特殊的符號,所以前面要加上兩個反斜杠來代表這是一個單純的小數點(.),那么問題就來了!!

當我手動執行hive的時候,我是通過hive -f 執行的,得到的結果數據大約有5000W條,然而我把一樣的sql放到kettle中執行(注:kettle中我不愿意在服務器的某個地方寫個文件來存放sql,這樣后面的人也不好維護,還要去服務器上看我的sql文本,所以kettle中我直接hive -e 執行),結果我發現kettle出來的數據只有50W,你說滑稽不滑稽。。。。

經過折磨,最后在同事的幫助下,我們發現,hive -e "要執行的sql",這種在引號里面使用2個反斜杠,會出現問題,具體什么問題,我還說不太清楚,但是雙引號里面用2個反斜杠確實是會有些沖突(因為hive -f 沒有使用到雙引號,應該是把這個文本直接傳入到hive的類當中,所以沒有這樣的問題)

因此使用hive -e "要執行的sql" 這種方式跑數據,千萬千萬看看有沒有反斜杠,多關注下反斜杠和雙引號是否會沖突,這里我測出來,如果要使用 \\ ,就要替換成\\\\

所以:

select split(split(split(url,'/')[size(split(url,'/'))-1],'\\.')[0],'~')[0]

需要替換成?

select split(split(split(url,'/')[size(split(url,'/'))-1],'\\\\.')[0],'~')[0]

這樣就沒有問題了!F***K~

最后總結下:如果你在hive中直接執行該命令,那么就只能有\\否則不生效,如果是hive -e(或者說sql命令外面有雙引號引起來的),那么就需要用\\\\
---------------------
作者:lsr40
來源:CSDN
原文:https://blog.csdn.net/lsr40/article/details/81566424
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!謝謝!

轉載于:https://www.cnblogs.com/wangbin2188/p/10024661.html

總結

以上是生活随笔為你收集整理的hive -e和hive -f的区别(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。