MaxCompute自定义extractor访问OSS文本文件DateTime类型数据

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: MaxCompute自定义extractor访问OSS文本文件,官方示例无法支持DateTime数据读入。该文档示范引入joda-time,解决自定义时间日期格式,读入外部非结构化数据。

根据产品文档《访问OSS非结构化数据》,自定义Extractor访问OSS。github项目详见:TextExtractor

一、问题

该extractor在读取非结构化数据时,如果字段存在DateTime类型(例如:2019-10-27 19:44:36),会出现如下报错:
20191104162246

FAILED: ODPS-0123131:User defined function exception - Traceback:
java.lang.IllegalArgumentException
    at java.sql.Date.valueOf(Date.java:143)
    at com.aliyun.odps.udf.example.text.TextExtractor.textLineToRecord(TextExtractor.java:194)
    at com.aliyun.odps.udf.example.text.TextExtractor.extract(TextExtractor.java:153)
    at com.aliyun.odps.udf.ExtractorHandler.extract(ExtractorHandler.java:120)

根据堆栈,查看指定位置的代码:Date.valueOf(parts[i]),其中java.sql.Date.valueOf(),查询该函数官方文档,发现只能支持形如:"yyyy-[m]m-[d]d"的String类型参数。不支持时间部分。
20191104162644
20191104163839

二、解决方法

引入joda-time依赖

<dependency>
  <groupId>joda-time</groupId>
  <artifactId>joda-time</artifactId>
  <version>2.10</version>
</dependency>
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;

引入DateTimeFormat.forPattern(),指定日期格式对文本数据进行读取。

record.setDate(index, new Date(DateTime.parse(parts[i], DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")).getMillis()));

三、结果验证

1. extractor项目打包生成jar包,通过odpscmd上传resource

add jar /Users/gary/big_data/odps/text_extractor/target/text_extractor-1.0-SNAPSHOT.jar

/Users/gary/big_data/odps/text_extractor/target/text_extractor-1.0-SNAPSHOT.jar,替换为本地实际jar包路径

另外,extractor使用了Joda-Time,需要额外添加第三方包。
add jar /Users/gary/.m2/repository/joda-time/joda-time/2.10/joda-time-2.10.jar

/Users/gary/.m2/repository/joda-time/joda-time/2.10/joda-time-2.10.jar,替换为本地实际jar包路径

2. DDL建表,直接在odpscmd或者datastudio执行

CREATE EXTERNAL TABLE video_play_log
(
    UUID STRING
    ,action STRING
    ,ip STRING
    ,time datetime
)
STORED BY 'me.gary.test.odps.examples.TextStorageHandler'
WITH SERDEPROPERTIES ( 
 'odps.properties.rolearn'='acs:ram::<填写主账号uid>:role/aliyunodpsdefaultrole',
 'delimiter'='^'  --SERDEPROPERITES可以指定参数,这些参数会通过DataAttributes传递到Extractor代码中。
 )
 LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/<Bucket名称>/<目录名称>/'
 USING 'text_extractor-1.0-SNAPSHOT.jar,joda-time-2.10.jar';

odps.properties.rolearn中的信息是RAM中AliyunODPSDefaultRole的ARN信息。通过RAM控制台中的角色详情获取。
OSS的连接格式为oss://oss-cn-shanghai-internal.aliyuncs.com/Bucket名称/目录名称/。按实际信息替换

3. 上传测试数据至oss bucket的指定目录,命名video_play_log.txt。

5c661071dba64d5080c91da085ff1073^视频播放页-点击-快进^27.17.94.60^2019-10-27 19:44:36

4. select外部表

select * from <project_name>.video_play_log;
读取结果:
20191104170726

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
目录
相关文章
|
16天前
|
分布式计算 Shell MaxCompute
odps测试表及大量数据构建测试
odps测试表及大量数据构建测试
|
3天前
|
数据采集 存储 分布式计算
解密大数据:从零开始了解数据海洋
解密大数据:从零开始了解数据海洋
38 17
|
2月前
|
机器学习/深度学习 存储 大数据
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系
在大数据时代,高维数据处理成为难题,主成分分析(PCA)作为一种有效的数据降维技术,通过线性变换将数据投影到新的坐标系,保留最大方差信息,实现数据压缩、去噪及可视化。本文详解PCA原理、步骤及其Python实现,探讨其在图像压缩、特征提取等领域的应用,并指出使用时的注意事项,旨在帮助读者掌握这一强大工具。
135 4
|
2月前
|
存储 大数据 数据管理
大数据分区简化数据维护
大数据分区简化数据维护
35 4
|
3月前
|
存储 机器学习/深度学习 分布式计算
大数据技术——解锁数据的力量,引领未来趋势
【10月更文挑战第5天】大数据技术——解锁数据的力量,引领未来趋势
|
2月前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
574 7
|
2月前
|
存储 分布式计算 大数据
大数据 优化数据读取
【11月更文挑战第4天】
71 2
|
2月前
|
数据采集 监控 数据管理
数据治理之道:大数据平台的搭建与数据质量管理
【10月更文挑战第26天】随着信息技术的发展,数据成为企业核心资源。本文探讨大数据平台的搭建与数据质量管理,包括选择合适架构、数据处理与分析能力、数据质量标准与监控机制、数据清洗与校验及元数据管理,为企业数据治理提供参考。
124 1
|
2月前
|
存储 大数据 定位技术
大数据 数据索引技术
【10月更文挑战第26天】
82 3
|
2月前
|
存储 大数据 OLAP
大数据数据分区技术
【10月更文挑战第26天】
108 2