大数跨境
0
0

如何从HDFS导入数据到ClickHouse

如何从HDFS导入数据到ClickHouse 睿格软件
2019-03-22
2
导读:从ClickHouse 18.16.0版本开始支持从HDFS读文件,在 19.1.6 版本对HDFS访问功能


从ClickHouse 18.16.0版本开始支持从HDFS读文件,在 19.1.6 版本对HDFS访问功能进行了增强,支持读和写,在 19.4 版本以后开始支持Parquet格式。本文介绍了如何从HDFS中读数据到ClickHouse中,测试版本为:19.4 。

在访问HDFS之前需要定义一个访问HDFS的表,指定表引擎为HDFS。表创建完成后,就可以对这张表进行查询。

一、查询CSV文件

例如,在HDFS上有一个数据文件:books.csv,内容如下:

hadoop fs -cat /user/hive/ck/book_csv/books.csv

在ClickHouse上创建一个访问books.csv文件的表:

查询hdfs_books_csv表:

查询出的数据与books.csv的内容相同。

当用户执行 SELECT * FROM hdfs_books_csv 语句时,数据流向如下图:

这种使用场景相当于把HDFS做为ClickHouse的外部存储,当查询数据时,直接访问HDFS的文件,而不需要把HDFS文件导入到ClickHouse再进行查询。由于是从HDFS拉取数据,相对于ClickHouse的本地存储查询,速度较慢。

二、查询Parquet文件

ClickHouse 19.4 以后开始支持Parquet格式,下面对Parquet格式的HDFS数据文件进行测试,先上传一个Parquet数据文件 books.parquet 到HDFS,文件内容与books.csv相同,在HDFS上的路径如下:

/user/hive/ck/book_parquet/books.parquet

创建一个访问books.parquet文件的表:

在ClickHouse查询 hdfs_books_parquet 表:

查询出的数据与books.csv的内容相同。

以上的操作是从HDFS上直接查询数据,也可以将读取的数据加载到ClickHouse的本地表。

三、从HDFS导入数据

在ClickHouse先创建一个目标表,然后执行INSERT...SELECT从HDFS导入数据。


从HDFS导入数据到ClickHouse,然后查询ClickHouse本地表的数据流向图如下:

四、总结

用户通过执行SQL语句,可以在ClickHouse中直接读取HDFS的文件,也可以将读取的数据导入到ClickHouse本地表。ClickHouse提供了对Hadoop生态圈更加友好的访问方式。    

【声明】内容源于网络
0
0
睿格软件
睿格软件是一家以自主研发为核心的信息化方案供应商,致力于开发基于JAVAWEB,ANDROID,IOS等的应用,为政府单位,大中小企业,教育等各行各业量身定做适合的信息系统,为用户提供整套的信息化解决方案
内容 53
粉丝 0
睿格软件 睿格软件是一家以自主研发为核心的信息化方案供应商,致力于开发基于JAVAWEB,ANDROID,IOS等的应用,为政府单位,大中小企业,教育等各行各业量身定做适合的信息系统,为用户提供整套的信息化解决方案
总阅读14
粉丝0
内容53