本文翻譯自官網:Reading & Writing Hive Tables https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/hive/read_write_hive.html
使用HiveCatalog和Flink的Hive連接器,Flink可以讀取和寫入Hive數據,以替代Hive的批處理引擎。確保遵循說明在您的應用程序中包括正確的依賴項。
從 Hive 讀數據
假設Hive在其default數據庫中包含一個表,該表名為people,其中包含幾行。
hive> show databases; OK default Time taken: 0.841 seconds, Fetched: 1 row(s) hive> show tables; OK Time taken: 0.087 seconds hive> CREATE TABLE mytable(name string, value double); OK Time taken: 0.127 seconds hive> SELECT * FROM mytable; OK Tom 4.72 John 8.0 Tom 24.2 Bob 3.14 Bob 4.72 Tom 34.9 Mary 4.79 Tiff 2.72 Bill 4.33 Mary 77.7 Time taken: 0.097 seconds, Fetched: 10 row(s)
准備好數據后,您可以連接到現有的Hive 安裝程序並開始查詢。
Flink SQL> show catalogs; myhive default_catalog # ------ Set the current catalog to be 'myhive' catalog if you haven't set it in the yaml file ------ Flink SQL> use catalog myhive; # ------ See all registered database in catalog 'mytable' ------ Flink SQL> show databases; default # ------ See the previously registered table 'mytable' ------ Flink SQL> show tables; mytable # ------ The table schema that Flink sees is the same that we created in Hive, two columns - name as string and value as double ------ Flink SQL> describe mytable; root |-- name: name |-- type: STRING |-- name: value |-- type: DOUBLE Flink SQL> SELECT * FROM mytable; name value __________ __________ Tom 4.72 John 8.0 Tom 24.2 Bob 3.14 Bob 4.72 Tom 34.9 Mary 4.79 Tiff 2.72 Bill 4.33 Mary 77.7
寫數據到hive
同樣,可以使用INSERT INTO子句將數據寫入 hive。
Flink SQL> INSERT INTO mytable (name, value) VALUES ('Tom', 4.72);
局限性
以下是Hive連接器的主要限制列表。我們正在積極努力縮小這些差距。
- 不支持 INSERT OVERWRITE。
- 不支持插入分區表。
- 不支持ACID表。
- 不支持存儲桶的表。
- 不支持某些數據類型。有關詳細信息,請參見限制。
- 僅測試了有限數量的表存儲格式,即文本,SequenceFile,ORC和Parquet。
- 不支持視圖。
歡迎關注Flink菜鳥公眾號,會不定期更新Flink(開發技術)相關的推文

