透過 ETL 匯出 Hive 中的資料

hw2499發表於2023-02-27

 

什麼是Hive?

  •  Hive是在Hadoop分散式檔案系統上執行的開源分散式資料倉儲資料庫,用於查詢和分析大資料。

  •  資料以表格的形式儲存(與關係型資料庫十分相似)。資料操作可以使用名為HiveQL的SQL介面來執行。

  •  HiveQL預設情況下會轉換成MapReduce進行計算(降低了開發難度),所以比較慢,常用於做離線資料分析場景,不適合做實時查詢。


    為什麼選擇Hive?

  • Hive是執行在Hadoop上的SQL介面。此外,它還降低了使用MapReduce框架程式設計的複雜性。

  • Hive幫助企業在HDFS上執行大規模資料分析,使其成為一個水平可伸縮的資料庫。

  •  透過HiveSQL使具有RDBMS背景的開發人員能夠快速構建符合自己業務需求的資料倉儲。

  •  Hive直接將資料儲存在HDFS系統中,擴容等事宜都交由HDFS系統來維護。

    如何將Hive中的分析資料導到業務系統中?

    etl-engine支援對Hive的讀取,並輸出到以下目標資料來源:

  • 訊息中介軟體(Kafka | RocketMQ);

  • 關係型資料庫( Oracle | MySQL | PostgreSQL | Sqlite);

  • NoSQL(Elasticsearch | Redis);

  •  時序資料庫( InfluxDB | ClickHouse | Prometheus);

  • 檔案( Excel );

    etl-engine支援None和Kerberos認證方式,適合測試環境及企業應用生產環境中的認證場景。

     只需要二步 就完成 讀Hive寫DB操作

    編寫配置檔案 hive_to_db.grf

<?xml version="1.0" encoding="UTF-8"?>
<Graph>
    <Node id="HIVE_READER_01" dbConnection="CONNECT_02"   
    type="HIVE_READER" desc="讀Hive節點1"  fetchSize="1000" >
    <Script name="sqlScript"><![CDATA[
         select uuid,name,height,writetime from db_hive_edu.t_u_info  
]]></Script>
      </Node>
 
 
 <Node id="DB_OUTPUT_01" type="DB_OUTPUT_TABLE" desc="寫資料表節點1" 
dbConnection="CONNECT_01" outputFields="uuid;name;height;writetime"  
renameOutputFields="uuid;name;height;writetime"  >
        <Script name="sqlScript"><![CDATA[
          insert into db1.t_hive_u_info (uuid,name,height,writetime) values (?,?,?,?)
    ]]></Script>
  </Node>
 
 <Line id="LINE_01" type="STANDARD" from="HIVE_READER_01" 
to="DB_OUTPUT_01" order="0" metadata="METADATA_01"></Line>
  <Metadata id="METADATA_01">
    <Field name="uuid" type="int" default="-1" nullable="false"/>
    <Field name="name" type="string" default="-1" nullable="false"/>
    <Field name="height" type="float" default="-1" nullable="false"/>
     <Field name="writetime" type="string" default="-1" nullable="false"/>
  </Metadata>
   
 <Connection id="CONNECT_02" dbURL="hadoop01:10000" 
database="db_hive_edu" username="Administrator" password="******" 
batchSize="1000" type="HIVE"/>
    <Connection 
id="CONNECT_01" dbURL="127.0.0.1:3306" database="db1" username="root" 
password="******" batchSize="1000" type="MYSQL"/>
   <!--  
    
 <Connection sortId="1" id="CONNECT_1" type="ORACLE" 
dbURL="127.0.0.1:1521" database="orcl" username="c##u1" 
password="******" />
   -->
</Graph>



 執行命令

etl_engine -fileUrl hive_to_db.grf -logLevel debug


如此簡單就完成了 讀 hive 資料表 、寫 mysql 資料表 操作。

 參考資料

  [免費下載]()
  [etl-engine使用手冊]()
  [etl-crontab使用手冊](/wiki/etl-crontab%E8%B0%83%E5%BA%A6)
  [嵌入指令碼開發](/wiki/%E5%B5%8C%E5%85%A5%E8%84%9A%E6%9C%AC%E5%BC%80%E5%8F%91)




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024931/viewspace-2937232/,如需轉載,請註明出處,否則將追究法律責任。

相關文章