hive orc表'orc.create.index'='true'與'orc.create.index'='false'
hive ORC檔案儲存格式是以列存的方式,在查詢表中少數列資料,不必要去查詢沒條資料的所有欄位;但是如果一個列的值全部儲存一起,查詢一個列的一條資料,會將整個表該列的所有資料都查詢出來,如果資料量很大,查詢速度依然很慢;然後引入orc.create.index(行組索引),行組索引就能解決以上的問題;
概念解釋:
行組索引:
如下圖:
表一為傳統資料儲存,按行儲存,如果沒有儲存索引的話,查詢一個欄位,需要把整行查詢出來;
表二為orc行組索引,首先資料按照列存方式儲存,然後按照一個單位值(10000行)組成一個行組,查詢時,在orc的 每個行組索引的後設資料(後設資料 記錄了行組下每個列的最小值、最大值、和等資訊)匹配查詢條件,資料查詢掃描對應的行組,從而達到優化查詢的目錄;
非行組索引的orc表,則orc後設資料沒有 每個列的最小值、最大值、和等資訊,查詢時,資料掃描會進行全表掃描,不能達到查詢優化的目的;
常見orc建表語句如下:
CREATE TABLE T (C1 INT,C2 INT)STORED AS ORC; -- 建立帶有行組索引的orc空表(預設情況下建立orc表,是帶有orc.create.index=true屬性的) CREATE TABLE T (C1 INT,C2 INT)STORED AS ORC TBLPROPERTIES('orc.create.index'='true'); -- 建立帶有行組索引的orc空表 CREATE TABLE T (C1 INT,C2 INT)STORED AS ORC TBLPROPERTIES('orc.create.index'='false'); -- 建立不帶有行組索引的orc空表 create TABLE T stored AS ORC TBLPROPERTIES('orc.create.index'='true') as select * from T_TMP; -- 建立帶有行組索引的orc表,如果T_TMP有資料,建立T表時也會進行資料載入 create TABLE T stored AS ORC TBLPROPERTIES('orc.create.index'='false') as select * from T_TMP; -- 建立不帶有行組索引的orc表,如果T_TMP有資料,建立T表時也會進行資料載入
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69985104/viewspace-2758737/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- true || false && falseFalse
- Python解惑:True與FalsePythonFalse
- null >=0 ? true:falseNullFalse
- WPF ClipToBounds True or falseFalse
- Ruby中的true和falseFalse
- Hive Streaming 追加 ORC 檔案Hive
- js判斷true和false一覽JSFalse
- ajax的true非同步或者false同步非同步False
- php true false isset empty is_null array()PHPFalseNull
- js中return、return true、return false的區別JSFalse
- 做「容量預估」可沒有true和falseFalse
- TIMED_STATISTICS 設定true 或 false 區別False
- onerror事件處理函式返回false或者true的作用Error事件函式False
- Hibernate 註解@Column(nullable = false) 和 @Column(unique=true)NullFalse
- Standby Server中的log_archive_start=false還是true ?ServerHiveFalse
- WebView#shouldOverrideUrlLoading究竟要返回true還是falseWebViewIDEFalse
- peewee 的 BooleanField 是翻譯為 tinyint(1) 還是 enum('true','false')?BooleanFalse
- HIVE之 Sqoop 1.4.6 安裝、hive與oracle表互導HiveOOPOracle
- true--按了整數鍵, false--按了非整數鍵False
- php中0,'',null,false,true,FLASE,TREU,array()的相等恆等學習PHPNullFalse
- hive建表Hive
- Java中“100=100”為true,而"1000=1000"為false?JavaFalse
- 『Java 語法基礎』3 * 0.1 == 0.3 將會返回什麼?true 還是 false?JavaFalse
- preventDefault()與return false區別False
- Python3中真真假假True、False、None等含義詳解PythonFalseNone
- [hive]hive資料模型中四種表Hive模型
- 內部Fragment設定為public static和checkReleaseBuilds false與abortOnError falseFragmentUIFalseError
- mysql資料庫中tinyint(1) 儲存數字時候取值為True、False解釋MySql資料庫False
- Hive表的基本操作Hive
- hive分桶表排序Hive排序
- js跳出迴圈的方法區別( break, continue, return ) 及 $.each 的(return true 和 return false)...JSFalse
- 為什麼Java中1000==1000為false而100==100為true?JavaFalse
- auto-install-peers=true strict-peer-dependencies=false 這兩個配置的作用是什麼False
- [轉] 由表單中 onsubmit="return false;" 想到的MITFalse
- Hive之 hive與hadoop的聯絡HiveHadoop
- Java-學習日記(100 == 100為true,1000 == 1000卻為false?)JavaFalse
- 如何用javascript使兩個name一樣的radio的disabled同時為true或falseJavaScriptFalse
- Spark操作Hive分割槽表SparkHive