使用限制
建议在配置子账号授权数据的读写权限的同时,追加 QcloudCOSBucketConfigRead、QcloudCOSDataFullControl 两项策略权限。因为 Spark 在操作 COS 文件时部分情况下需要 headBucket 权限。
COS 离线单表读取节点配置
参数 | 说明 |
数据来源 | 选择当前项目中可用的 COS 数据源。 |
文件路径 | COS文件路径需带上桶名称,如 cosn://bucket_name。 |
文件格式 | COS 支持五种文件类型:txt 、orc 、parquet 、csv、json。 txt:表示 TextFile 文件格式。 orc:表示 ORCFile 文件格式。 parquet:表示普通 Parquet 文件格式。 csv:表示普通 HDFS 文件格式(逻辑二维表)。 json:表示 JSON 文件格式。 |
压缩格式 | 当 fileType(文件类型)为 csv 下的文件压缩方式,目前仅支持:none、deflate、gzip、bzip2、lz4、snappy。 说明: 由于 snappy 目前没有统一的 stream format,数据集成目前仅支持最主流的 hadoop-snappy(hadoop 上的 snappy stream format)和 framing-snappy(google 建议的 snappy stream format)。 ORC 文件类型下无需填写。 |
字段分隔符 | 读取的字段分隔符,COS 在读取 TextFile 数据时,需要指定字段分割符,如果不指定默认为逗号(,)。COS 在读取 ORC File时,您无需指定字段分割符。 其他可用分隔符:' \\t ' 、' \\u001 ' 、' | '、' 空格 ' 、 ' ;' ' , '。 如果您想将每一行作为目的端的一列,分隔符请使用行内容不存在的字符。例如,不可见字符\\u0001。 |
编码 | 读取文件的编码配置。支持 utf8 和 gbk 两种编码。 |
空值转换 | 读取时,将指定字符串转为 null。 |
COS 离线单表写入节点配置
参数 | 说明 |
数据去向 | 选择当前项目中可用的 COS 数据源。 |
文件路径 | COS 文件路径需带上桶名称,如 cosn://bucket_name。 |
写入模式 | COS 支持三种写入模式: append:写入前不做任何处理,直接使用 filename 写入,保证文件名不冲突 。 nonConflict:文件名重复时报错 。 overwrite:写入前清理以文件名为前缀的所有文件,例如,"fileName": "abc",将清理对应目录所有 abc 开头的文件。 |
文件格式 | COS 支持三种文件类型:txt 、csv、orc。 txt:表示 TextFile 文件格式。 csv:表示普通 HDFS 文件格式(逻辑二维表)。 orc:表示 ORCFile 文件格式。 |
压缩格式 | 当 fileType(文件类型)为 csv 下的文件压缩方式,目前仅支持:none、deflate、gzip、bzip2、lz4、snappy。 说明: 由于 snappy 目前没有统一的 stream format,数据集成目前仅支持最主流的 hadoop-snappy(hadoop上的snappy stream format)和 framing-snappy(google 建议的 snappy stream format)。 ORC 文件类型下无需填写。 |
字段分隔符 | 写入的字段分隔符。COS 写入时的字段分隔符,需要您保证与创建的 COS表的字段分隔符一致,否则无法在 COS 表中查到数据。可选:' \\t ' 、' \\u001 ' 、' | '、' 空格 ' 、 ' ;' ' , '。 |
编码 | 写入文件的编码配置。支持 utf8 和 gbk 两种编码。 |
空字符串处理 | 不做处理:写入时,不处理空字符串 处理为 null:写入时,将空字符串处理为 null |
是否包含表头 | 是:写入时,包含表头 否:写入时,不包含表头 说明: 仅文件格式为 txt 、csv 支持选择是否包含表头。 |
高级设置(选填) | 可根据业务需求配置参数。 |
数据类型转换支持
COS Select 通过 CAST 函数确定您输入数据的数据类型,一般而言,如果您未通过 CAST 函数进行数据类型指定,COS Select 将把输入数据类型视为 string 类型。
读取
COS 数据类型 | 内部类型 |
integer | Long |
float、decimal | Double |
string | String |
timestamp | Date |
bool | Boolean |
写入
内部类型 | COS 数据类型 |
Long | integer |
Double | float、decimal |
String | string |
Date | timestamp |
Boolean | bool |
COS 脚本 Demo
如果您配置离线任务时,使用脚本模式的方式进行配置,您需要在任务脚本中,按照脚本的统一格式要求编写脚本中的 reader 参数和 writer 参数。
"job": {"content": [{"reader": {"parameter": {"path": "/","nullFormat": "null", //空值转换"compress": "gzip", //压缩格式"lineDelimiter": "\\n", //行分隔符"hadoopConfig": {"fs.defaultFS": "cosn://source-bucket","fs.cosn.userinfo.secretId": "******","fs.cosn.tmp.dir": "/tmp/hadoop_cos","fs.cosn.trsf.fs.ofs.tmp.cache.dir": "/tmp/","fs.cosn.userinfo.secretKey": "******","fs.cosn.bucket.region": "ap-beijing","fs.cosn.impl": "org.apache.hadoop.fs.CosFileSystem","fs.cosn.trsf.fs.ofs.bucket.region": "ap-beijing","fs.cosn.trsf.fs.ofs.user.appid": "******"},"column": ["*"],"defaultFS": "cosn://source-bucket", //源文件路径"skipHeader": "false", //是否跳过表头"fieldDelimiter": ",", //字段分割符"encoding": "utf-8", //编码方式"fileType": "text" //文件类型},"name": "hdfsreader"},"transformer": [],"writer": {"parameter": {"path": "/","fileName": "part","nullFormat": "null", //空值转换"compress": "gzip", //压缩格式"hadoopConfig": {"fs.defaultFS": "cosn://sink-bucket","fs.cosn.userinfo.secretId": "******","fs.cosn.tmp.dir": "/tmp/hadoop_cos","fs.cosn.trsf.fs.ofs.tmp.cache.dir": "/tmp/","fs.cosn.userinfo.secretKey": "******","fs.cosn.bucket.region": "ap-beijing","fs.cosn.impl": "org.apache.hadoop.fs.CosFileSystem","fs.cosn.trsf.fs.ofs.bucket.region": "ap-beijing","fs.cosn.trsf.fs.ofs.user.appid": "******"},"defaultFS": "cosn://sink-bucket", //目标文件路径"emptyAsNull": false,"writeMode": "append", //写入模式"suffix": "parquet", //文件后缀"fieldDelimiter": ",", //字段分隔符"encoding": "utf-8", //编码方式"fileType": "parquet" //文件类型},"name": "hdfswriter"}}],"setting": {"errorLimit": { //脏数据阈值"record": 0},"speed": {"byte": -1, //不限制同步速度,正整数表示设置最大传输速度 byte/s"channel": 1 //并发数量}}}