当前位置:   article > 正文

ORC存储格式_高斯db存储方式orc是什么

高斯db存储方式orc是什么

1、orc索引

index、row group index、bloom filter index

set hive.optimize.index.filter=true;打开索引(默认是flase)

轻量级索引Row Group Index

一个orc文件包含一个或者多个stripe(groups of row data),stripe里面存放数据和索引和stripe footer。每个stripe包含了每个列的最大值和最小值,当查询><=的时候,可以根据max和min来跳过不必要的stripe。

其中为每个stripe建立的包含min/max值的索引,就称为Row Group Index,也叫min-max Index,或者Storage Index。在建立ORC格式表时,指定表参数’orc.create.index’=’true’之后,便会建立Row Group Index,需要注意的是,为了使Row Group Index有效利用,向表中加载数据时,必须对需要使用索引的字段进行排序否则,min/max会失去意义。另外,这种索引通常用于数值型字段的查询过滤优化上。

ORC查询优化
一个ORC文件会被分成多个stripe,而且文件的元数据中有每个字段的统计信息(min/max,hasNull等等),这就为ORC的查询优化做好了基础准备。假如我的查询过滤条件为WHERE id = 0;在Map Task读到一个ORC文件时,首先从文件的统计信息中看看id字段的min/max值,如果0不包含在内,那么这个文件就可以直接跳过了。基于这点,还有一个更有效的优化手段是在数据入库的时候,根据id字段排序后入库,这样尽量能使id=0的数据位于同一个文件甚至是同一个stripe中,那么在查询时候,只有负责读取该文件的Map Task需要扫描文件,其他的Map Task都会跳过扫描,大大节省Map Task的执行时间。

海量数据下,使用ORDER BY可能不太现实,另一个有效手段是使用DISTRIBUTE BY id SORT BY id;

使用下面的HQL构造一个较大的ORC表:

CREATE TABLE test_orc3 stored AS ORC 
AS 
SELECT CAST(siteid AS INT) AS id,
pcid 
FROM lxw1234_text 
DISTRIBUTE BY id sort BY id;
该语句保证相同的id位于同一个ORC文件中,并且是排序的。

摘自:http://lxw1234.com/archives/2016/04/632.htm

4、order by      distribute by和sort by cluster  by

distribute by和sort by的字段相同 =  cluster by

order by  只会在一个reduce中,distribute by和sort by 来代替他,distribute by 会根据字段进行hash,分多个reduce

sort by 排序,在每一个reduce中进行排序

详情:https://blog.csdn.net/bitcarmanlee/article/details/51694616

3、建表

  1. CREATE TABLE test_orc(
  2. id INT,
  3. name STRING
  4. ) stored AS ORC;
  5. 指定orc、分区分桶都需要用临时表insert进去,否则会出错,桶没有分等
  6. CREATE TABLE test_orc1 stored AS ORC
  7. TBLPROPERTIES
  8. ('orc.compress'='SNAPPY',
  9. 'orc.create.index'='true',
  10. 'orc.bloom.filter.fpp'='0.05',
  11. 'orc.stripe.size'='10485760',
  12. 'orc.row.index.stride'='10000')

 

3、查看orc格式文件的元数据

./hive --orcfiledump -j -p hdfs:/user/hive/warehouse/test.db/test_orc/000000_1

  1. {
  2. "fileName": "\/user\/hive\/warehouse\/test.db\/test_orc\/000000_1",
  3. "fileVersion": "0.12",
  4. "writerVersion": "HIVE_13083",
  5. "numberOfRows": 90,
  6. "compression": "ZLIB",
  7. "compressionBufferSize": 262144,
  8. "schemaString": "struct<id:int,name:string>",
  9. "schema": [
  10. {
  11. "columnId": 0,
  12. "columnType": "STRUCT",
  13. "childColumnNames": [
  14. "id",
  15. "name"
  16. ],
  17. "childColumnIds": [
  18. 1,
  19. 2
  20. ]
  21. },
  22. {
  23. "columnId": 1,
  24. "columnType": "INT"
  25. },
  26. {
  27. "columnId": 2,
  28. "columnType": "STRING"
  29. }
  30. ],
  31. "stripeStatistics": [{
  32. "stripeNumber": 1,
  33. "columnStatistics": [
  34. {
  35. "columnId": 0,
  36. "count": 90,
  37. "hasNull": false
  38. },
  39. {
  40. "columnId": 1,
  41. "count": 90,
  42. "hasNull": false,
  43. "min": 1,
  44. "max": 7,
  45. "sum": 345,
  46. "type": "LONG"
  47. },
  48. {
  49. "columnId": 2,
  50. "count": 90,
  51. "hasNull": false,
  52. "min": "吕布",
  53. "max": "马超",
  54. "totalLength": 540,
  55. "type": "STRING"
  56. }
  57. ]
  58. }],
  59. "fileStatistics": [
  60. {
  61. "columnId": 0,
  62. "count": 90,
  63. "hasNull": false
  64. },
  65. {
  66. "columnId": 1,
  67. "count": 90,
  68. "hasNull": false,
  69. "min": 1,
  70. "max": 7,
  71. "sum": 345,
  72. "type": "LONG"
  73. },
  74. {
  75. "columnId": 2,
  76. "count": 90,
  77. "hasNull": false,
  78. "min": "吕布",
  79. "max": "马超",
  80. "totalLength": 540,
  81. "type": "STRING"
  82. }
  83. ],
  84. "stripes": [{
  85. "stripeNumber": 1,
  86. "stripeInformation": {
  87. "offset": 3,
  88. "indexLength": 73,
  89. "dataLength": 68,
  90. "footerLength": 53,
  91. "rowCount": 90
  92. },
  93. "streams": [
  94. {
  95. "columnId": 0,
  96. "section": "ROW_INDEX",
  97. "startOffset": 3,
  98. "length": 11
  99. },
  100. {
  101. "columnId": 1,
  102. "section": "ROW_INDEX",
  103. "startOffset": 14,
  104. "length": 25
  105. },
  106. {
  107. "columnId": 2,
  108. "section": "ROW_INDEX",
  109. "startOffset": 39,
  110. "length": 37
  111. },
  112. {
  113. "columnId": 1,
  114. "section": "DATA",
  115. "startOffset": 76,
  116. "length": 12
  117. },
  118. {
  119. "columnId": 2,
  120. "section": "DATA",
  121. "startOffset": 88,
  122. "length": 12
  123. },
  124. {
  125. "columnId": 2,
  126. "section": "LENGTH",
  127. "startOffset": 100,
  128. "length": 5
  129. },
  130. {
  131. "columnId": 2,
  132. "section": "DICTIONARY_DATA",
  133. "startOffset": 105,
  134. "length": 39
  135. }
  136. ],
  137. "encodings": [
  138. {
  139. "columnId": 0,
  140. "kind": "DIRECT"
  141. },
  142. {
  143. "columnId": 1,
  144. "kind": "DIRECT_V2"
  145. },
  146. {
  147. "columnId": 2,
  148. "kind": "DICTIONARY_V2",
  149. "dictionarySize": 6
  150. }
  151. ]
  152. }],
  153. "fileLength": 373,
  154. "paddingLength": 0,
  155. "paddingRatio": 0,
  156. "status": "OK"
  157. }

 

 

 

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/777241
推荐阅读
相关标签
  

闽ICP备14008679号