实时计算Flink > 独享模式 > Batch(试用) > 创建源表 —— 创建HDFS源表
本页目录 创建 HDFS 源表 什么是HDFS 读HDFS某个路径下所有CSV文件 读取HDFS某个目录下所有ORC文件示例 WITH参数 创建 HDFS 源表 什么是HDFS HDFS是Hadoop的分布式文件系统。HDFS可以作为Blink Batch的源表和结果表。HDFS上可以存储各种文件类型,目前Blink支持对CSV/Parquet/ORC文件格式的解析。以CSV为例,说明hdfs source用法 DDL定义 create table hdfs_source( name varchar, age BIGINT, birthday BIGINT ) with ( type='csv', path='hdfs://root/stest/test.csv', lineDelimiter='\n', fieldDelimiter='|' ); 读HDFS某个路径下所有CSV文件 大部分情况下,HDFS上的文件都是以表的形式保存的,表下面还有分区,例如: $hadoop fs -ls /user/hive/warehouse/xxx/table1/ Found 989 items drwxrwxrwx - serving supergroup 0 2017-03-09 15:44 /user/hive/warehouse/xxx/table1/dt=20180814 drwxrwxrwx - serving supergroup 0 2017-03-09 15:44 /user/hive/warehouse/xxx/table1/dt=20180815 读表table1的某个分区数据的示例代码如下: create table hdfs_source( name varchar, age BIGINT, birthday BIGINT ) with ( type='csv', path='hdfs://hdfs_name/user/hive/warehouse/xxx/table1/dt=20180814', lineDelimiter='\n', fieldDelimiter='|' ); create table test_sink( name varchar, age bigint, birthday bigint ) with ( type='print' ) insert into test_sink select name, age, birthday from hdfs_source 目前CSV文件暂不支持递归读取多级目录,只能读某个子目录下的所有文件 读取HDFS某个目录下所有ORC文件示例 HDFS上文件可存储为压缩格式orc/parquet,读取这两类文件时,可递归读取某个目录下所有文件,例如,某个表在hdfs上的保存目录如下: $hadoop fs -ls /user/hive/warehouse/xxx/table1/ Found 989 items drwxrwxrwx - serving supergroup 0 2017-03-09 15:44 /user/hive/warehouse/xxx/table1/dt=20180814 drwxrwxrwx - serving supergroup 0 2017-03-09 15:44 /user/hive/warehouse/xxx/table1/dt=20180815 现要读取整个表table1的所有数据,示例代码如下: create table hdfs_orc_source( name varchar, age BIGINT, birthday BIGINT ) with ( type='orc', path='hdfs://hdfs_name/user/hive/warehouse/xxx/table1/dt=20180814', enumerateNestedFiles='true' ); create table test_sink( name varchar, age bigint, birthday bigint ) with ( type='print' ) insert into test_sink select name, age, birthday from hdfs_source enumerateNestedFiles 参数可递归 WITH参数 目前只支持tuple模式的topic 参数 注释说明 备注 type hdfs上文件类型 目前blink支持对CSV/Parquet/ORC文件格式的解析 path 文件在HDFS上路径 lineDelimiter 文件的行分隔符 默认’\n’ fileSplitMinSize 文件切分大小,控制并发 默认33554432000L isContinuousStream 默认true fieldDelimiter 文件的列分隔符 默认’,’ 本文转自实时计算—— 创建HDFS源表