13.2、Flink Table API&SQL-Hiveの読み書きHive表


HiveCatalogとFlinkからHiveへのコネクタを使用して、FlinkはHiveデータを読み書きでき、Hiveバッチ処理エンジンの代わりになります。必ず説明に従って、アプリケーションに正しい依存項(Flink Table API&SQL-Hiveのhive概要を参照)を含んでください。
時計を読む
Hiveがデフォルトのデータベースにテーブルを含んでいると仮定します。ここにはいくつかの行が含まれています。
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に接続し、既存の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
表を書く
同様に、INSERT intoサブルーチンを使用して、データをhiveに書き込むことができる。
Flink SQL> INSERT INTO mytable (name, value) VALUES ('Tom', 4.72);
限界性
下記はHiveコネクタの主な制限リストです。私たちはこれらの差を縮めるために積極的に努力しています。
  • INSERT OVERWRITEはサポートされていません。
  • 書き込みパーティションテーブルは
  • に対応していません。
  • ACIDテーブルは
  • をサポートしていません。
  • 分バケットテーブルは
  • をサポートしていません。
  • 部分のデータタイプはサポートされていません。詳細は、上記の記事(Flink Table API&SQL-Hiveのhive概要)
  • を参照してください。
  • テスト部分テーブルのデータフォーマットは、text、squence file、ORCとParket
  • があります。
  • ビューは
  • をサポートしていません。