04 Load Data

将文件Load到CARBONDATA表

此命令用于将csv文件加载到carbondata,对于数据加载过程,OPTIONS不是强制性的。 OPTIONS内部用户可以根据需要提供任何选项,如DELIMITER,QUOTECHAR,FILEHEADER,ESCAPECHAR,MULTILINE。

carbondata在load数据时。默认必须csv格式,而且必须有header和表中的列对应。
但是可以在load数据时,使用DELIMITER和FILEHEADER指定分隔符和列。

LOAD DATA [LOCAL] INPATH 'folder_path' 
INTO TABLE [db_name.]table_name 
OPTIONS(property_name=property_value, ...)

在load data时可以使用一下选项:

  • DELIMITER: 可以在load命令中指定分隔符

    OPTIONS('DELIMITER'=',')
  • QUOTECHAR: 指定引用字符,如果分割符号分割开的列是用引用字符包裹的,那么引用字符被去除

    OPTIONS('QUOTECHAR'='"')

    如:constr :String = ‘“aaa”\”bbb”\”ccc”\”ddd”’; 引用字符是双引号,用\分割后,是aaa bbb ccc ddd

  • COMMENTCHAR: 如果用户想要注释行,可以在load命令中指定此参数。

    OPTIONS('COMMENTCHAR'='#')
  • FILEHEADER: 如果在源文件中缺少列名,可以在LOAD DATA命令中指定列名。

    OPTIONS('FILEHEADER'='column1,column2') 
  • MULTILINE: CSV with换行符 in quotes.

    OPTIONS('MULTILINE'='true') 
  • ESCAPECHAR: 如果用户希望严格验证CSV上的转义字符,则可以自定义转义字符。

    OPTIONS('ESCAPECHAR'='\') 
  • COMPLEX_DELIMITER_LEVEL_1: 将复合类型数据列拆分成一行 (例如, a b <script type="math/tex" id="MathJax-Element-1">b</script>c –> Array = {a,b,c}).

    OPTIONS('COMPLEX_DELIMITER_LEVEL_1'='$') 
  • COMPLEX_DELIMITER_LEVEL_2: 将复杂类型嵌套数据列分成一行。 应用level_1分隔符&根据复杂数据类型应用level_2 (eg., a:b$c:d –> Array> = {{a,b},{c,d}}).

    OPTIONS('COMPLEX_DELIMITER_LEVEL_2'=':')
  • ALL_DICTIONARY_PATH: 所有的字典文件路径。

    OPTIONS('ALL_DICTIONARY_PATH'='/opt/alldictionary/data.dictionary')
  • COLUMNDICT: 指定列的字典文件路径。

    OPTIONS('COLUMNDICT'='column1:dictionaryFilePath1,column2:dictionaryFilePath2')
  • DATEFORMAT/TIMESTAMPFORMAT: 日期和时间格式化

    OPTIONS('DATEFORMAT'='column1:dateFormat1, column2:dateFormat2')
    OR
    OPTIONS('DATEFORMAT' = 'yyyy-MM-dd','TIMESTAMPFORMAT'='yyyy-MM-dd  HH:mm:ss')

    注:日期格式由日期模式字符串指定。CarbonData中的日期模式字母与JAVA中的相同。参考SimpleDateFormat.

  • SINGLE_PASS: Single Pass Loading 使得单个作业可以即时完成数据加载时字典生成。 它提高了在初始加载后的后续数据加载只涉及更新少量的字典时的性能。
    该选项指定是否使用单通道加载数据。 默认情况下,该选项设置为FALSE。

    OPTIONS('SINGLE_PASS'='TRUE')

    注意 :

    • 如果此选项设置为TRUE,则数据加载将花费较少的时间。
    • 如果此选项设置为TRUE或FALSE以外的某个无效值,则使用默认值。
    • 如果此选项设置为TRUE,那么high.cardinality.identify.enable属性将在数据加载期间被禁用。
    • 在第一个加载时SINGLE_PASS加载选项是禁用的。

示例:

LOAD DATA local inpath '/opt/rawdata/data.csv' INTO table carbontable
options('DELIMITER'=',', 'QUOTECHAR'='"','COMMENTCHAR'='#',
'FILEHEADER'='empno,empname,designation,doj,workgroupcategory,
workgroupcategoryname,deptno,deptname,projectcode,
projectjoindate,projectenddate,attendance,utilization,salary',
'MULTILINE'='true','ESCAPECHAR'='\','COMPLEX_DELIMITER_LEVEL_1'='$',
'COMPLEX_DELIMITER_LEVEL_2'=':',
'ALL_DICTIONARY_PATH'='/opt/alldictionary/data.dictionary',
'SINGLE_PASS'='TRUE')
  • BAD RECORDS HANDLING: 处理不良记录的方法如下:
  • 在处理错误之前加载所有数据。
  • 在加载数据前清理或删除不良记录,或在发现不良记录时停止加载。

    OPTIONS('BAD_RECORDS_LOGGER_ENABLE'='true', 'BAD_RECORD_PATH'='hdfs://hacluster/tmp/carbon', 'BAD_RECORDS_ACTION'='REDIRECT', 'IS_EMPTY_DATA_BAD_RECORD'='false')

    NOTE:
    -对于不良记录BAD_RECORD_ACTION属性可以有四种类型的操作:FORCE,REDIRECT,IGNORE和FAIL。
    • 如果使用REDIRECT选项,Carbon会将所有不良记录添加到单独的CSV文件中。但是,此文件不能用于后续数据加载,因为内容可能不完全匹配源记录。建议您清理原始来源记录以进一步获取数据。此选项用于提醒您哪些记录是不良记录。
    • 如果使用IGNORE选项,那么不良记录被忽略,既不会加载也不会写入到单独的CSV文件中。
    • 如果使用FAIL选项,那么如果发现任何不良记录,则数据加载失败。
    • 在加载的数据中,如果所有记录都是坏记录,则BAD_RECORDS_ACTION无效,加载操作失败。
    • 每列的最大字符数为100000.如果列中的字符数超过100000个,则数据加载将失败。
OptionsDefault ValueDescription
BAD_RECORDS_LOGGER_ENABLEfalse是否创建有关不良记录详细信息的日志。
BAD_RECORDS_ACTIONFAIL以下是错误记录的四种类型的操作:
FORCE:通过将错误记录存储为NULL来自动纠正数据。
REDIRECT:坏的记录被写入到原始的CSV而不是被加载。
IGNORE:坏记录既不被加载也不被写入原始CSV。
FAIL:如果发现任何不良记录,数据加载失败。
注意:在加载的数据中,如果所有记录都是不良记录,
则BAD_RECORDS_ACTION无效,加载操作失败。
IS_EMPTY_DATA_BAD_RECORDfalse如果为false,则空(“”或“’或”)数据将不被视为不良记录,反之亦然。
BAD_RECORD_PATH-指定存储不良记录的HDFS路径。 默认情况下,该值为空。
如果启用了坏记录记录器或记录错误动作重定向,则必须由用户配置此路径。

Example:

LOAD DATA INPATH 'filepath.csv'
INTO TABLE tablename
OPTIONS('BAD_RECORDS_LOGGER_ENABLE'='true',
'BAD_RECORD_PATH'='hdfs://hacluster/tmp/carbon',
'BAD_RECORDS_ACTION'='REDIRECT',
'IS_EMPTY_DATA_BAD_RECORD'='false');

一个真实的例子:

LOAD DATA inpath 'hdfs://nameHAservice/user/erb/17ResultData' INTO table carbon.dw_17_userlog_raw
options('DELIMITER'='\001', 
'FILEHEADER'='appname,version,session_id,logtime,pday,year,month,day,unique_userid,userid,macid,client_ip,areacode,province,city,area,request_url,refer,app_origin,p_event,event,action,viewpagevalue,request_param,course,lesson,user_agent,czxt,xtbb,czxtlx,sdk_ver,start_type,channel,channel_ver,nsrsbh,mobile',
'BAD_RECORDS_LOGGER_ENABLE'='true',
'BAD_RECORD_PATH'='hdfs://nameHAservice/user/eeb/bad/',
'BAD_RECORDS_ACTION'='REDIRECT',
'IS_EMPTY_DATA_BAD_RECORD'='false',
'SINGLE_PASS'='TRUE')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值