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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248935.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248935.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248935.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

我們是如何做好前端工程化和靜態資源管理 - 無雄 - 博客園

我們是如何做好前端工程化和靜態資源管理 隨著互聯網的發展,我們的業務也日益變得更加復雜且多樣化起來,前端工程師也不再只是做簡單的頁面開發這么簡單,我們需要面對的十分復雜的系統性問題,例如,業務愈來愈復雜&…

Mybatis-plus之RowBounds實現分頁查詢

物理分頁和邏輯分頁 物理分頁:直接從數據庫中拿出我們需要的數據,例如在Mysql中使用limit。 邏輯分頁:從數據庫中拿出所有符合要求的數據,然后再從這些數據中拿到我們需要的分頁數據。 優缺點 物理分頁每次都要訪問數據庫&#xf…

常見的6種JavaScript設計模式

常見的6種JavaScript設計模式 構造函數模式 /*** 構造一個動物的函數 */ function Animal(name, color){this.name name;this.color color;this.getName function(){return this.name;} } // 實例一個對象 var cat new Animal(貓, 白色); console.log( cat.getName() );工…

峰度(Kurtosis)和偏度(Skewness)

峰度(Kurtosis) 定義峰度又稱峰態系數,表征概率密度分布曲線在平均值處峰值高低的特征數,即是描述總體中所有取值分布形態陡緩程度的統計量。直觀看來,峰度反映了峰部的尖度。這個統計量需要與正態分布相比較。 公式定…

1.27

測試程序提出問題并解決轉載于:https://www.cnblogs.com/JustinTimberlake/p/10028870.html

javascript設計模式系列 - LukeLin - 博客園

javascript設計模式系列 創建型: 1.抽象工廠模式(Abstract Factory) 2.構建者模式(Builder) 3.工廠方法模式(Factory Method) 4.原型模式(Prototype) 5.單例模式&a…

多功能嵌入式解碼軟件(2)

多功能嵌入式解碼軟件(2) 驗證類庫 通信協議 下面進行一個示例: 下位機需要向上位機發送3中數據幀,數據幀以功能碼來識別,每種數據幀的協議如下3個表格所示,上位機需要把這些數據按照協議解碼出來&#xff…

vue項目如何打包扔向服務器 - Hi-Sen - 博客園

當我們將 vue 項目完成后,面臨的就是如何將項目進行打包上線,放到服務器中。我使用的是 vue-cli(simple) 腳手架,所以就講一下如何將項目進行打包,并放到 tomcat 上。 如果是 vue-cli (非 simple 腳手架…

MySQL備份與恢復-mysqldump備份與恢復

這片博文主要用來介紹MySQL的備份與恢復: MySQL的備份形式可以分為如下幾種: 熱備----即不停機備份冷備----需要關閉MySQL,然后備份其數據文件。(停機備份一般是直接拷貝其datadir目錄)溫備----在線備份,對…

第六次實訓作業異常處理

第六次實訓作業異常處理 編寫一個類ExceptionTest,在main方法中使用try-catch-finally語句結構實現:在try語句塊中,編寫兩個數相除操作,相除的兩個操作數要求程序運行時用戶輸入;在catch語句塊中,捕獲被0除…

k8s學習筆記-調度之Affinity

Kubernetes中的調度策略可以大致分為兩種 一種是全局的調度策略,要在啟動調度器時配置,包括kubernetes調度器自帶的各種predicates和priorities算法,具體可以參看上一篇文章; 另一種是運行時調度策略,包括nodeAffinity…

vue-cli webpack配置分析 - chenBright - SegmentFault 思否

相信vue使用者對vue-cli都不會陌生,甚至可以說,很熟悉了,但對其webpack的配置可能知之甚少吧。 過完年回來后,我接手了公司的新項目。新項目是一個spa。很自然,我就想到了vue-cli腳手架了,當時研究一下它的…

[Xcode 實際操作]六、媒體與動畫-(6)使用UIBlurEffect給圖片添加模糊效果

目錄:[Swift]Xcode實際操作 本文將演示如何給圖像添加模糊效果。 在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】 1 import UIKit2 3 class ViewController: UIViewController {4 5 override func viewDidLoad() {6 super.…

MapReduce編程實踐

一、MapReduce編程思想 學些MapRedcue主要是學習它的編程思想,在MR的編程模型中,主要思想是把對數據的運算流程分成map和reduce兩個階段: Map階段:讀取原始數據,形成key-value數據(map方法)。即…

webpack基礎+webpack配置文件常用配置項介紹+webpack-dev-server - QxQstar - 博客園

一.webpack基礎 1.在項目中生成package.json:在項目根目錄中輸入npm init,根據提示輸入相應信息。(也可以不生成package.json文件,但是package.json是很有用的,所有建議生成) 2.安裝webpaack a.在全局中安裝…

(十)

空轉載于:https://www.cnblogs.com/shanae/p/10034479.html

編譯原理--NFA/DFA

現成的, 講義: https://www.cnblogs.com/AndyEvans/p/10240790.html https://www.cnblogs.com/AndyEvans/p/10241031.html 一個例子, 寫得非常好. 一下子就全明白了, 尤其是像我這種沒有聽過編譯原理課程的人. https://blog.csdn.net/tyler_download/article/details/53139240 …

Python中pass的用法

空語句 do nothing保證格式完整保證語義完整以if語句為例,在c或c/java中: if(true); //do nothingelse{ //do something}對應于python就要這樣寫: if true: pass #do nothingelse: #do something 1 pass語句在函數中的作用當你在編寫一個程序…

express路由管理的幾種自動化方法分享-js教程-PHP中文網

我們平時在使用express寫代碼的過程中,會根據類別,將路由分為多個不同的文件,然后在項目的入口文件(例如app.js)中將其依次掛載,例如: 1 2 3 4 5 6 7 const index require(./routes/index) con…

dotnet不是內部或外部的命令,也不是可運行的程序或批處理文件

>>這臺電腦>>屬性>>高級系統設置>>環境變量>>系統變量>>Path>>編輯>> 變量值中添加 %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem; 即可。轉載于:https://www.cnblogs.com/ZCrystal/p/10894591.html