天天看点

实时计算Flink > 独享模式 > Batch(试用) > 创建源表 —— 创建HDFS源表 创建 HDFS 源表

本页目录

HDFS是Hadoop的分布式文件系统。HDFS可以作为Blink Batch的源表和结果表。HDFS上可以存储各种文件类型,目前Blink支持对CSV/Parquet/ORC文件格式的解析。以CSV为例,说明hdfs source用法

DDL定义

  1. create table hdfs_source(

  2. name varchar,

  3. age BIGINT,

  4. birthday BIGINT

  5. ) with (

  6. type='csv',

  7. path='hdfs://root/stest/test.csv',

  8. lineDelimiter='\n',

  9. fieldDelimiter='|'

  10. );

大部分情况下,HDFS上的文件都是以表的形式保存的,表下面还有分区,例如:

  1. $hadoop fs -ls /user/hive/warehouse/xxx/table1/

  2. Found 989 items

  3. drwxrwxrwx - serving supergroup 0 2017-03-09 15:44 /user/hive/warehouse/xxx/table1/dt=20180814

  4. drwxrwxrwx - serving supergroup 0 2017-03-09 15:44 /user/hive/warehouse/xxx/table1/dt=20180815

读表table1的某个分区数据的示例代码如下:

  1. create table hdfs_source(

  2. name varchar,

  3. age BIGINT,

  4. birthday BIGINT

  5. ) with (

  6. type='csv',

  7. path='hdfs://hdfs_name/user/hive/warehouse/xxx/table1/dt=20180814',

  8. lineDelimiter='\n',

  9. fieldDelimiter='|'

  10. );

  11. create table test_sink(

  12. name varchar,

  13. age bigint,

  14. birthday bigint

  15. ) with (

  16. type='print'

  17. )

  18. insert into test_sink

  19. select

  20. name,

  21. age,

  22. birthday

  23. from hdfs_source

目前CSV文件暂不支持递归读取多级目录,只能读某个子目录下的所有文件

HDFS上文件可存储为压缩格式orc/parquet,读取这两类文件时,可递归读取某个目录下所有文件,例如,某个表在hdfs上的保存目录如下:

  1. $hadoop fs -ls /user/hive/warehouse/xxx/table1/

  2. Found 989 items

  3. drwxrwxrwx - serving supergroup 0 2017-03-09 15:44 /user/hive/warehouse/xxx/table1/dt=20180814

  4. drwxrwxrwx - serving supergroup 0 2017-03-09 15:44 /user/hive/warehouse/xxx/table1/dt=20180815

现要读取整个表table1的所有数据,示例代码如下:

  1. create table hdfs_orc_source(

  2. name varchar,

  3. age BIGINT,

  4. birthday BIGINT

  5. ) with (

  6. type='orc',

  7. path='hdfs://hdfs_name/user/hive/warehouse/xxx/table1/dt=20180814',

  8. enumerateNestedFiles='true'

  9. );

  10. create table test_sink(

  11. name varchar,

  12. age bigint,

  13. birthday bigint

  14. ) with (

  15. type='print'

  16. )

  17. insert into test_sink

  18. select

  19. name,

  20. age,

  21. birthday

  22. from hdfs_source

enumerateNestedFiles 参数可递归

目前只支持tuple模式的topic

参数 注释说明 备注
type hdfs上文件类型 目前blink支持对CSV/Parquet/ORC文件格式的解析
path 文件在HDFS上路径
lineDelimiter 文件的行分隔符 默认’\n’
fileSplitMinSize 文件切分大小,控制并发 默认33554432000L
isContinuousStream 默认true
fieldDelimiter 文件的列分隔符 默认’,’

本文转自实时计算——

创建HDFS源表