本文翻译自官网: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(开发技术)相关的推文
来源:oschina
链接:https://my.oschina.net/u/4415923/blog/3337102