hive中兩個數的和怎麼超市_hive中hive中月,天的數據導入兩級分區...

2020-11-23 CSDN技術社區

暑假實習使用了兩個月的odps ,回學校看了下hadoop 的hive ,讓我對資料庫與數據倉庫增進了一些理解,記錄下來。

簡而言之,資料庫是面向事務的設計,數據倉庫是面向主題設計的。

資料庫一般存儲在線交易數據,數據倉庫存儲的一般是歷史數據。

資料庫設計是儘量避免冗餘,一般採用符合範式的規則來設計,數據倉庫在設計是有意引入冗餘,採用反範式的方式來設計。

資料庫是為捕獲數據而設計,數據倉庫是為分析數據而設計,它的兩個基本的元素是維表和事實表。維是看問題的角度,比如時間,部門,維表放的就是這些東西的定義,事實表

裡放著要查詢的數據,同時有維的ID。

單從概念上講,有些晦澀。任何技術都是為應用服務的,結合應用可以很容易地理解。以銀行業務為例。資料庫是事務系統的數據平臺,客戶在銀行做的每筆交易都會寫入資料庫,被記錄下來,這裡,可以簡單地理解為用資料庫記帳。數據倉庫是分析系統的數據平臺,它從事務系統獲取數據,並做匯總、加工,為決策者提供決策的依據。比如,某銀行某分行一個月發生多少交易,該分行當前存款餘額是多少。如果存款又多,消費交易又多,那麼該地區就有必要設立ATM了。

  顯然,銀行的交易量是巨大的,通常以百萬甚至千萬次來計算。事務系統是實時的,這就要求時效性,客戶存一筆錢需要幾十秒是無法忍受的,這就要求資料庫只能存儲很短一段時間的數據。而分析系統是事後的,它要提供關注時間段內所有的有效數據。這些數據是海量的,匯總計算起來也要慢一些,但是,只要能夠提供有效的分析數據就達到目的了。

  數據倉庫,是在資料庫已經大量存在的情況下,為了進一步挖掘數據資源、為了決策需要而產生的,它決不是所謂的「大型資料庫」。那麼,數據倉庫與傳統資料庫比較,有哪些不同呢?讓我們先看看W.H.Inmon關於數據倉庫的定義:面向主題的、集成的、與時間相關且不可修改的數據集合。

  「面向主題的」:傳統資料庫主要是為應用程式進行數據處理,未必按照同一主題存儲數據;數據倉庫側重於數據分析工作,是按照主題存儲的。這一點,類似於傳統農貿市場與超市的區別—市場裡面,白菜、蘿蔔、香菜會在一個攤位上,如果它們是一個小販賣的;而超市裡,白菜、蘿蔔、香菜則各自一塊。也就是說,市場裡的菜(數據)是按照小販(應用程式)歸堆(存儲)的,超市裡面則是按照菜的類型(同主題)歸堆的。

  「與時間相關」:資料庫保存信息的時候,並不強調一定有時間信息。數據倉庫則不同,出於決策的需要,數據倉庫中的數據都要標明時間屬性。決策中,時間屬性很重要。同樣都是累計購買過九車產品的顧客,一位是最近三個月購買九車,一位是最近一年從未買過,這對於決策者意義是不同的。

  「不可修改」:數據倉庫中的數據並不是最新的,而是來源於其它數據源。數據倉庫反映的是歷史信息,並不是很多資料庫處理的那種日常事務數據(有的資料庫例如電信計費資料庫甚至處理實時信息)。因此,數據倉庫中的數據是極少或根本不修改的;當然,向數據倉庫添加數據是允許的。

數據倉庫的出現,並不是要取代資料庫。目前,大部分數據倉庫還是用關係資料庫管理系統來管理的。可以說,資料庫、數據倉庫相輔相成、各有千秋。 

  補充一下,數據倉庫的方案建設的目的,是為前端查詢和分析作為基礎,由於有較大的冗餘,所以需要的存儲也較大。為了更好地為前端應用服務,數據倉庫必須有如下幾點優點,否則是失敗的數據倉庫方案。

  1.效率足夠高。客戶要求的分析數據一般分為日、周、月、季、年等,可以看出,日為周期的數據要求的效率最高,要求24小時甚至12小時內,客戶能看到昨天的數據分析。由於有的企業每日的數據量很大,設計不好的數據倉庫經常會出問題,延遲1-3日才能給出數據,顯然不行的。

  2.數據質量。客戶要看各種信息,肯定要準確的數據,但由於數據倉庫流程至少分為3步,2次ETL,複雜的架構會更多層次,那麼由於數據源有髒數據或者代碼不嚴謹,都可以導致數據失真,客戶看到錯誤的信息就可能導致分析出錯誤的決策,造成損失,而不是效益。

  3.擴展性。之所以有的大型數據倉庫系統架構設計複雜,是因為考慮到了未來3-5年的擴展性,這樣的話,客戶不用太快花錢去重建數據倉庫系統,就能很穩定運行。主要體現在數據建模的合理性,數據倉庫方案中多出一些中間層,使海量數據流有足夠的緩衝,不至於數據量大很多,就運行不起來了。

有兩個層面/角度來回答這個有趣的問題:
1
,邏輯層面/概念層面:資料庫和數據倉庫其實是一樣的或者及其相似的,都是通過某個資料庫軟體,基於某種數據模型來組織、管理數據。但是,資料庫通常更關注業務交易處理(OLTP),而數據倉庫更關注數據分析層面(OLAP),由此產生的資料庫模型上也會有很大的差異。
資料庫通常追求交易的速度,交易完整性,數據的一致性,等等,在資料庫模型上主要遵從範式模型(1NF2NF3NF,等等),從而儘可能減少數據冗餘,保證引用完整性;而數據倉庫強調數據分析的效率,複雜查詢的速度,數據之間的相關性分析,所以在資料庫模型上,數據倉庫喜歡使用多維模型,從而提高數據分析的效率。
2
,產品實現層面:資料庫和數據倉庫軟體是有些不同的,資料庫通常使用行式存儲,如SAP ASEOracle, Microsoft SQL Server,而數據倉庫傾向使用列式存儲,如SAP IQSAP HANA。

odps 是阿里把hadoop hive進行修改 的一個數據倉庫,每天比如淘寶的每一筆交易明細實時存在 ocean base資料庫(阿里改的一個資料庫,現在所有淘寶數據都在上面),一般是每天凌晨三點把每天交易數據同步到odps 相對應的交易離線數據表中特定時間分區中,數據技術產品部就是做這些表的分析處理和數據挖掘工作,odps是一個數據分析平臺凡是涉及到對數據處理都必須用到。真正當你在實際工作中要用到你才能對一些概念真正有理解體會。

參考網址:點擊打開連結  點擊打開連結

相關焦點

  • Hive數據倉庫實戰
    它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張資料庫表,並提供簡單的SQL查詢功能, Hive 定義了簡單的類 SQL 查詢語言,稱為 HQL,它允許熟悉 SQL 的用戶查詢數據。
  • Hive建表和內外部表的使用
    * from normal;實際在跑MapReduce我們查看表和數據我們可以看到元數據也存在表結構也一樣我們再看下HDFS所以子查詢將查詢的數據和表的結構賦予一張新的表元數據和HDFS都有四、數據共享我們重新創建一個資料庫創建員工表創建部門表導入數據我們創建表引用另外一個表的文件,比如引入我們的
  • 大數據開發:Hive調優的幾種思路
    一、本地模式當一個MapReduce任務的數據量和計算任務很小的時候,在MapReduce框架中Map任務和Reduce任務的啟動過程佔用了任務執行的大部分時間,真正的邏輯處理其實佔用時間很少,但是給用戶的感受就是:很小的任務,同樣執行較長的時間。
  • HiveSql基礎函數使用(一)
    一、hive函數1、關係函數2、日期函數3、條件函數4、字符串函數5、統計函數二、hiveQL1、DDL2、DML三、其它1、in()函數2、lateral view 函數3、row_number() 和rank
  • 大數據分析工程師入門9-Spark SQL
    應用程式可以從結構化的數據文件、Hive的table、外部資料庫和RDD中創建一個DataFrame。在工作中使用Spark SQL進行處理數據的第一步就是讀取數據,Spark SQL通過統一的接口去讀取和寫入數據。
  • 數據倉庫建設基本思想
    一、數據倉庫的分層結構1)ods層:原始數據直接同步過來;ODS作為數據緩衝層,保留的是所有的數據,理論上粒度和源系統保持一致,同時不丟數據,業務DB基本上是直接同步過來,LOG主要是做結構化。2)維表和事實表層:該主要是將ods的數據經過規範化處理、業務邏輯處理等得到的。在該層以後使用的所有數據都必須且只能來自該層,不能再從ods層提取。3)主題層:主要將維表和事實層的數據按照相同的業務主題進行整合得到。
  • 大數據基礎知識:Hadoop分布式系統介紹
    Hadoop生態除了基礎Hadoop,發展到今天Hadoop已經擁有非常完善和龐大的開源生態圈:HDFS提供文件存儲,YARN提供資源管理,在此基礎上,進行各種處理,包括mapreduce、Tez、Sprak、Storm等等,以滿足不同要求的數據使用場景。HDFS架構
  • Spark在360商業數據部的應用實踐
    數據處理的實時鏈路如所示:1) 1種方式是通過Apache Flume實時寫入Hdfs,用於第二天全量數據的離線計算2) 1種方式是通過SparkSteaming實時處理,處理後數據會回流至Kafka或者Redis,便於後續流程使用。
  • HIVE 窗口函數詳解
    什麼是窗口函數窗口函數是 SQL 中一類特別的函數。和聚合函數相似,窗口函數的輸入也是多行記錄。不 同的是,聚合函數的作用於由 GROUP BY 子句聚合的組,而窗口函數則作用於一個窗口, 這裡,窗口是由一個 OVER 子句 定義的多行記錄。
  • 大數據分析工程師面試集錦3-SQL/SparkSql/HiveQL
    (3)SQL雖然看上去很簡單,但實際上是一種強有力的語言,靈活使用其語言元素,可以進行非常複雜和高級的資料庫操作。題2:你是怎麼理解資料庫和表的?答:資料庫是一個以某種有組織的方式存儲的數據集合。總之,無論會怎麼面,面試者需要對基本的DDL語言十分熟悉這是肯定的,類似考題比如怎麼給表重命名呀,怎麼刪除一張表呀,怎麼給表插入數據呀,等等,這裡就不一一列舉了,如果真的忘了,可即刻上網百度複習一下。
  • 大數據BI系統實操總結:如何做數據採集?
    ,都需要獲取哪些數據,獲取到後要採集存儲到哪個數據倉庫的表中,最終被使用到。數據源管理包括新增,編輯,刪除等;表結構管理包括表結構的批量導入,查看等;因為採集過程中表是要參與映射的,結構一旦導入是不允許修改的,以免影響後面的採集配置文件的輸出。
  • 群智和真實大數據面試相關提問
    群智和面試或者說你們用的hive計算引擎是什麼?(13)拋開大數據,你認為map的好處是什麼?(14)說一下map的實現類它為什麼查找速度快(15)combineByKey 和 combinByname第二個算子它是這樣說的,它讓我去官網上找,他倆的區別?(16)map可以儲存什麼類型的數據,以及儲存數據之後它怎麼會查的速度快?
  • 大數據分析與數據分析的根本區別在哪裡?
    如今大數據分析和數據分析火爆,要說時機,可謂處處都是時機,關鍵要明了的一點是,大數據分析和數據分析兩者的根本區別在哪裡,只有真正了解了,才會知曉更加適合自己的領域是大數據分析師還是數據分析師。畢竟職場如戰場,時間就是生活,不容兒戲,更不容怠慢。下面我來好好告訴大家兩者的本質區別到底是什麼!大數據分析:指無法在可承受的時間範圍內用常規軟體工具進行捕捉、管理和處理的數據集合。
  • 袋鼠雲大數據崗位面試題
    (2)flink的怎麼和rocksDB交互的。畫一個流程圖。(這個我也不會)  (3)flink怎麼實現Exactly-once?  (4)flink on yarn 的任務提交流程?  (5)rocksDB為什麼可以存儲那麼大的數據量。  (6)使用eventtime+watermark的時候,如果數據到6點結束了。
  • 大數據開發是做什麼的?需要具備什麼技能?
    大數據開發、數據倉庫、數據安全、數據分析、數據挖掘等都是圍繞大數據的商業價值應運而生。大數據開發主要分為大數據平臺開發(研發級)、大數據應用開發和大數據分析(統計學和機器學習),不同崗位需要面對不同的崗位職責,也需要具備不同的知識結構。大數據開發做什麼?
  • 數據倉庫系統架構和數倉分層體系介紹
    通過集群的分布式計算能力和分布式文件系統,來計算和存儲數據。我們使用的阿里雲服務,把業務數據存儲到hive中,然後劃分為不同的層級,來規劃整合數據。藉助分布式文件系統可以存儲大數據量的數據,包括久遠之前的歷史數據。 4、數據應用 使用HQL、Mapreduce、SparkSql、UDF函數等多種處理方式,對各種業務數據進行處理,形成一定規範模式的數據。