Data Lake Analytics: 自动推断 OSS 上的 CSV 文件

简介: 截止目前,Data Lake Analytics(下面简称 DLA)已经和 OSS 有很多深度的集成,详情可以参见 DLA 的官方文档:DLA 和 OSS 整合。 为了能够提供更好的使用体验,目前可以通过 DLA 自动探测 OSS 上的多种文件格式,并自动生成建表语句,大大减少建表的使用成本。

截止目前,Data Lake Analytics(下面简称 DLA)已经和 OSS 有很多深度的集成,详情可以参见 DLA 的官方文档:DLA 和 OSS 整合

为了能够提供更好的使用体验,目前可以通过 DLA 自动探测 OSS 上的多种文件格式,并自动生成建表语句,大大减少建表的使用成本。之前我们支持探测的文件格式包括 JSON、AVRO、Parquet, ORC 等,具体使用可以参见 Data Lake Analytics: 基于OSS文件自动推断建表。为了满足更多客户的需求,我们新加了一种文件格式的探测,也就是我们常见的 CSV 格式。本文将介绍如何使用这个功能。

在介绍之前,我们需要先创建一个基于 OSS 的 Database,如下:

CREATE SCHEMA dla_oss_test with DBPROPERTIES(
   catalog='oss',
   location= 'oss://dla-test/'
 );

我们这里用到的 OSS Bucket 名称为 dla-test,大家在具体使用的时候换成自己对于的 OSS Bucket 即可。

通过 DLA 创建基于 OSS 表并探测文件格式的建表语句基本语法为

CREATE EXTERNAL TABLE table_name LIKE MAPPING ('oss://path/to/target/dir')

下面我们通过几个例子来说明这个功能的使用。

例子1

很多时候,我们的 CSV 文件是没有文件头的,针对这种情况,DLA 自动探测能够识别这种情况,并自动生成每列的字段名。比如我们准备以下的 CSV 文件(1.csv):

1,dla,28,beijing
2,spark on dla,30,hangzhou
3,presto,40,shenzhen
4,aliyun,30,shanghai

我们把 1.csv 文件上传到 dla-test Bucket 的 oss://dla-test/dla_csv_oss/dla_csv_noheader 路径中,然后我们的建表语句如下:

CREATE EXTERNAL TABLE dla_oss_test.create_table_like_csv like mapping('oss://dla-test/dla_csv_oss/dla_csv_noheader/');

执行完之后, DLA 结合 OSS 的路径,自动推断出这个路径下的 CSV 文件的格式,以及文件的类型,我们使用 show create table dla_oss_test.create_table_like_csv 语句就可以看到推断出来的建表语句:

show create table dla_oss_test.create_table_like_csv

CREATE EXTERNAL TABLE `dla_oss_test`.`create_table_like_csv` (
    `_col1` tinyint,
    `_col2` string,
    `_col3` tinyint,
    `_col4` string
)
STORED AS `TEXTFILE`
LOCATION 'oss://dla-test/dla_csv_oss/dla_csv_noheader'
TBLPROPERTIES (
    'create.table.like.file' = 'oss://dla-test/dla_csv_oss/dla_csv_noheader/',
    'escape.delim' = '\\',
    'field.delim' = ','
)

可以看出,DLA 已经自动为我们推断出 CSV 文件有四列,因为这个 CSV 文件没有头部信息,所以使用默认的列名当做表的字段名称,同时结合数据,推断出每列的数据类型。在 TBLPROPERTIES 里面,推断出 CSV 文件的分隔符以及转义字符等。

现在我们可以查看下这张表的数据:

select * from dla_oss_test.create_table_like_csv

结果如下:
csv1
可以看到,已经正确读出我们要的数据。

例子2

如果 CSV 文件有文件头部信息,DLA 也可以自动推断出来,比如我们有如下内容的 CSV 文件(2.csv)

show_id,title,director,cast,country,date_added,release_year,rating,duration,listed_in,description,type
81193313,Chocolate,,"Ha Ji-won, Yoon Kye-sang, Jang Seung-jo, Kang Bu-ja, Lee Jae-ryong, Min Jin-woong, Kim Won-hae, Yoo Teo",South Korea,"November 30, 2019",2019,TV-14,1 Season,"International TV Shows, Korean TV Shows, Romantic TV Shows","Brought together by meaningful meals in the past and present, a doctor and a chef are reacquainted when they begin working at a hospice ward.",TV Show
81197050,Guatemala: Heart of the Mayan World,"Luis Ara, Ignacio Jaunsolo",Christian Morales,,"November 30, 2019",2019,TV-G,67 min,"Documentaries, International Movies","From Sierra de las Minas to Esquipulas, explore Guatemala's cultural and geological wealth, including ancient Mayan cities and other natural wonders.",Movie
81213894,The Zoya Factor,Abhishek Sharma,"Sonam Kapoor, Dulquer Salmaan, Sanjay Kapoor, Sikander Kher, Angad Bedi, Koel Purie, Pooja Bhamrah, Manu Rishi Chadha",India,"November 30, 2019",2019,TV-14,135 min,"Comedies, Dramas, International Movies","A goofy copywriter unwittingly convinces the Indian cricket team that she’s their lucky mascot, to the dismay of their superstition-shunning captain.",Movie
81082007,Atlantics,Mati Diop,"Mama Sane, Amadou Mbow, Ibrahima Traore, Nicole Sougou, Amina Kane, Mariama Gassama, Coumba Dieng, Ibrahima Mbaye, Diankou Sembene","France, Senegal, Belgium","November 29, 2019",2019,TV-14,106 min,"Dramas, Independent Movies, International Movies","Arranged to marry a rich man, young Ada is crushed when her true love goes missing at sea during a migration attempt – until a miracle reunites them.",Movie
80213643,Chip and Potato,,"Abigail Oliver, Andrea Libman, Briana Buckmaster, Brian Dobson, Chance Hurstfield, Dominic Good, Emma Jayne Maas, Evan Byarushengo, Scotia Anderson, Alessandro Juliani","Canada, United Kingdom",,2019,TV-Y,2 Seasons,Kids' TV,"Lovable pug Chip starts kindergarten, makes new friends and tries new things – with a little help from Potato, her secret mouse pal.",TV Show
81172754,Crazy people,Moses Inwang,"Ramsey Nouah, Chigul, Sola Sobowale, Ireti Doyle, Ben Touitou, Francis Onwochei, Ememobong Nkana, Emem Inwang, Patrick Onyeke",Nigeria,"November 29, 2019",2018,TV-14,107 min,"Comedies, International Movies, Thrillers",Nollywood star Ramsey Nouah learns that someone is impersonating him and breaks out of a mental institution to expose the imposter.,Movie
81120982,I Lost My Body,Jérémy Clapin,"Hakim Faris, Victoire Du Bois, Patrick d'Assumçao, Dev Patel, Alia Shawkat, George Wendt",France,"November 29, 2019",2019,TV-MA,81 min,"Dramas, Independent Movies, International Movies","Romance, mystery and adventure intertwine as a young man falls in love and a severed hand scours Paris for its owner in this mesmerizing animated film.",Movie
81227195,Kalushi: The Story of Solomon Mahlangu,Mandla Dube,"Thabo Rametsi, Thabo Malema, Welile Nzuza, Jafta Mamabolo, Louw Venter, Pearl Thusi",South Africa,"November 29, 2019",2016,TV-MA,107 min,"Dramas, International Movies","The life and times of iconic South African liberation fighter Solomon Mahlangu, who battled the forces of apartheid, come into focus.",Movie
70205672,La Reina del Sur,,"Kate del Castillo, Cristina Urgel, Alberto Jiménez, Juan José Arjona, Humberto Zurita, Dagoberto Gama, Christian Tappán, Miguel de Miguel, Salvador Zerboni, Carmen Navarro, Santiago Meléndez, Juan Carlos Solarte","United States, Spain, Colombia, Mexico",,2019,TV-14,2 Seasons,"Crime TV Shows, International TV Shows, Spanish-Language TV Shows","This compelling show tells the story of the legendary Teresa Mendoza, a courageous woman who is perceived as conquering the world of drug trafficking.",TV Show
81172841,Lagos Real Fake Life,Mike Ezuruonye,"Nonso Diobi, Mike Ezuruonye, Mercy Aigbe, Rex Nosa, Annie Macaulay Idibia, Ik Ogbonna, Nedu Wazobia, Uzee Usman, Odunlade Adekola, Mr Jollof, Efe Irele, Josh 2 Funny, Haillie Sumney, Emmanuella, MC Lively",,"November 29, 2019",2018,TV-14,118 min,"Comedies, International Movies","Two mooching friends vie for the attention of wealthy, beautiful women only to discover that their lavish lifestyles are bogus.",Movie
81172899,Payday,Cheta Chukwu,"Baaj Adebule, Ebiye Victor, Meg Otanwa, Bisola Aiyeola, Mawuli Gavor, Zack Orji, Segilola Ogidan",Nigeria,"November 29, 2019",2018,TV-MA,110 min,"Comedies, Independent Movies, International Movies","After an expensive night out, two flatmates get tangled in an overnight misadventure to recover their rent money to pay their dead landlord's daughter.",Movie

我们把这个文件上传到 OSS 的 oss://dla-test/dla_csv_oss/dla_csv_header/ 路径下,然后建表语句如下:

CREATE EXTERNAL TABLE dla_oss_test.create_table_like_header like mapping('oss://dla-test/dla_csv_oss/dla_csv_header/');

执行这个语句的时候,DLA 能够自动推断出文件的 header 信息,以及类型。执行完这个语句之后,DLA 给我们推断出来的建表语句如下:

CREATE EXTERNAL TABLE `dla_oss_test`.`create_table_like_header` (
    `show_id` string COMMENT 'from deserializer',
    `title` string COMMENT 'from deserializer',
    `director` string COMMENT 'from deserializer',
    `cast` string COMMENT 'from deserializer',
    `country` string COMMENT 'from deserializer',
    `date_added` string COMMENT 'from deserializer',
    `release_year` string COMMENT 'from deserializer',
    `rating` string COMMENT 'from deserializer',
    `duration` string COMMENT 'from deserializer',
    `listed_in` string COMMENT 'from deserializer',
    `description` string COMMENT 'from deserializer',
    `type` string COMMENT 'from deserializer'
)
ROW FORMAT
    SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
STORED AS
    INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
    OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 'oss://dla-test/dla_csv_oss/dla_csv_header'
TBLPROPERTIES (
    'create.table.like.file' = 'oss://dla-test/dla_csv_oss/dla_csv_header/',
    'escapeChar' = '"',
    'quoteChar' = '"',
    'separatorChar' = ',',
    'skip.header.line.count' = '1'
)

可以看出,表的列名使用 CSV 文件中的 Header 信息,我们可以查看一下这张表的数据:
csv2

小结

DLA 自动推断 OSS 表上的常见文件格式可以大大减少我们的使用成本,在建表之前,我们不需要事先去找业务方去了解文件的格式,字段名等等,DLA 自动为我们做了这些事。

当然,目前自动推断支持的文件格式比较少,后期我们会根据具体情况,会增加更多的文件格式。

Data Lake Analytics简介

Data Lake Analytics(简称DLA)是阿里云上一款Serverless化的低成本大数据处理和分析服务。主打高性价比、打通和联合云上数据生态,以及高易用性的BI兼容能力。

  • 高性价比:世界领先的并行SQL计算引擎能力,为用户提供千亿级数据的交互式分析能力和万亿级数据的批量处理能力,并按量付费,零资源维护和保有成本;
  • 云上数据生态:提供阿里云上覆盖最广泛的数据联邦、融合分析、处理、回流能力,用统一的数据视角盘活、打通OSS、Table Store、日志服务数据湖投递、DBS数据库的数据湖备份、关系型数据库和NoSQL数据库的分析、处理生态;
  • 易用的BI兼容能力:以MySQL用户接口的形态兼容几乎所有具备MySQL连接能力的BI套件和可视化分析工具,让用户轻松点击即可分析、洞见云数据价值。
  • 产品链接:https://www.aliyun.com/product/datalakeanalytics
  • 新客户1元试用:https://common-buy.aliyun.com/?commodityCode=openanalytics_post

欢迎关注数据湖技术社区

数据湖开发者社区由 阿里云开发者社区 与 阿里云Data Lake Analytics团队 共同发起,致力于推广数据湖相关技术,包括hudi、delta、spark、presto、oss、元数据、存储加速、格式发现等,学习如何构建数据湖分析系统,打造适合业务的数据架构。
image

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
4月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之上传素材文件不在同一地域的OSS,怎么上传多张图片
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
49 1
|
4月前
|
存储 运维 Serverless
函数计算产品使用问题之OSS触发器是否可以只设置文件前缀
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
消息中间件 分布式计算 DataWorks
DataWorks产品使用合集之如何使用Python和阿里云SDK读取OSS中的文件
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
分布式计算 DataWorks 调度
DataWorks产品使用合集之在使用MaxCompute进行数据集成同步到OSS时,出现表名和OSS文件名不一致且多了后缀,该如何处理
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5月前
|
运维 Serverless 对象存储
函数计算产品使用问题之如何配合OSS实现接口收到的图片或文件直接存入OSS
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
6月前
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之如果oss文件过大,如何在不调整oss源文件大小的情况下优化查询sql
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
5月前
|
分布式计算 DataWorks 数据管理
DataWorks操作报错合集之使用OSS读取CSV文件到ODPS时遇到报错,一般是什么导致的
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
6月前
|
SQL 分布式计算 大数据
MaxCompute产品使用合集之是否可以对OSS文件进行谓词下推
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
6月前
|
文字识别 算法 API
视觉智能开放平台产品使用合集之在调用接口传入的图片URL参数,文件在本地或者非上海地域OSS链接,该怎么办
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
6月前
|
Java 对象存储
阿里云OSS上传下载文件java
阿里云OSS上传下载文件java
394 0