Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
project-collie
project-collie
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 5
    • Issues 5
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 2
    • Merge requests 2
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • granite
  • project-collieproject-collie
  • Wiki
    • Data_pump
    • Writers
  • file

Last edited by fanzx Dec 08, 2020
Page history

file

将数据保存到文件中

class参数配置为file.FileWriter

init 参数

配置参数 默认值 说明
path 输出文件的目录路径
overwrite False 是否覆盖写
max_size 125 限制单个文件的大小
scale m max_size的单位,支持['b', 'k', 'm', 'g', 't']
prefix split 文件前缀
prefix_add_pid False 开关,True时文件名中加入进程号可以防止多进程时写文件冲突
output_form bson 文件格式,支持bson, json, csv
csv_sep output_form为csv时的字段分隔符
csv_cols None output_form 为csv时, 指定需要写的字段,并按指定的字段顺序写文件, 默认将json中的所有value写入
csv_dialect customize csv格式,支持 'mysql','excel', 'customize', 默认为自定义格式。
enclosed_sep output_form 为csv时, 是否将字段内容用指定的符号包起来,可设为双引号‘"’
escaped_sep output_form 为csv时, 将字段内容中的分隔符替换为指定的字符,如csv_sep='\t',escaped_sep='\t'时,将字段内容中的'\t' 替换为'\t'
is_none None output_form 为csv时,如果is_none is True, 会将None写为\N, 否则将None写为''
compress 不压缩 是否压缩文件,,如果需要压缩,可设为'gz','tar'
data_split False 是否根据data中的某一列值为文件夹名来存储数据,如果需要,设为True
data_key None 按照此列值为文件夹名来存储数据,与data_split参数一起使用,与data_split=True时,这是必填参数
date_split False 是否根据日期来存储数据,如果需要,设为True(当data_split,date_split同时启用时,切分效果同时生效,但是data_split优先切分,即先按字段切分再按日期切分)
data_key None 按照此数据中列值为日期单位存储数据,不填写的话,按照系统的时间来存储数据。可参考filter中的实现
match_key None 匹配match_key定义的数据键值,其他的舍弃,优先级高于match_key。可参考filter中的实现
match_expr None Python正则语法过滤数据,匹配的才会写到文件,优先级低于match_key,有match_key时不生效
custom_time_pattern None 按照给的正则表达式提供的格式确定数据最小时间切分单位,比如按照小时存存储,custom_time_pattern='%Y%m%d/%H'
close_file_interval None 默认值为None,有些文件长时间不关闭; 设置数字时为子线程定时关闭文件的时间间隔秒数。比如300,就是5分钟关闭一次文件

设置保存文件的目录

  • path

控制单个文件的大小

  • max_size
  • scale

保存为CSV格式

与csv相关的参数

  • output_form
  • csv_dialect
  • csv_sep
  • csv_cols
  • enclosed_sep
  • escaped_sep
  • is_none

当csv_dialect设为excel或mysql时,csv_sep、enclosed_sep、escaped_sep、is_none参数设置将被忽略

为mysqlimport准备数据

将csv_dialect设为 mysql 生成的CSV文件可以使用mysqlimport导入到mysql中。

mysqlimport --verbose 
 --fields-terminated-by='\t' \
 --lines-terminated-by='\n' \
 --fields-enclosed-by='' \
 -h {host} -P {port} -u{user} -p{password} \
 --force \
 --columns="{fields}" \
 --local {database} {table}.csv

为excel准备数据

csv_dialect 设为excel生成的CSV文件,可以直接使用excel打开。

配置样例:

  stock_ic_clear:
    class: file.FileWriter
    init:
      path: "/data/disk3/data_lake/ic/clear"
      output_form: csv
      csv_sep: "\t"
      csv_cols: "company_id,clear_director,clear_members,create_time,update_time"
      is_none: True
      escaped_sep: "\\t"
output_form为csv时,插件内部已经将特殊字符、分割符等做了转义处理,所以不用担心错行、导入mysql中字段错乱问题。
自定义csv格式时,分隔符建议设为常用分隔符。字段分隔符推荐使用‘\t’,',',换行符推荐使用‘\n’,字段封闭符推荐使用‘"’,若不是为了将csv文件导入mysql表中,建议is_none使用默认值
Clone repository
  • README
  • data_pump
    • data_pump
    • filters
    • filters
      • bloom
    • readers
    • readers
      • file
      • kafka
      • mongodb
      • sql
    • writers
    • writers
      • file
  • dev_guide
  • dev_manual
  • Home
  • ops
    • ansible
View All Pages