博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Data Lake Analytics: 基于OSS文件自动推断建表
阅读量:7136 次
发布时间:2019-06-28

本文共 2231 字,大约阅读时间需要 7 分钟。

背景

用户在使用Data Lake Analytics对OSS上的数据建表时,需要预先知道目标文件的格式和schema信息。当目标文件中每条记录对应的列数很多时,需要一个个手动匹配,很不方便。

在新版的Data Lake Analytics中,支持了CREATE EXTERNAL TABLE LIKE 的语法。用户只需要提供表名和目标文件的路径,即可完成建表过程。

本文将重点介绍如何在Data Lake Analytics中使用该语句进行建表。

对OSS文件自动建表

基本语法

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

例子1

我想针对OSS上的一个包含相同schema的parquet文件的目录建表

  1. 目标表的名字为 my_new_table
  2. 该文件在OSS上的目录结构如下,且file1.parquet, file2.parquet和file3.parquet的schema结构完全相同
oss://mybucket/my_new_table/file1.parquetoss://mybucket/my_new_table/file2.parquetoss://mybucket/my_new_table/file3.parquet
  1. 目标表期待的LOCATION为
oss://mybucket/my_new_table/

相应的在Data Lake Analytics中的建表语句如下:

CREATE EXTERNAL TABLE my_new_table LIKEMAPPING ('oss://mybucket/my_new_table/')

建表成功后,执行SHOW CREATE TABLE语句进行验证。

CREATE EXTERNAL TABLE `my_new_table` (    `optionalPrimitive` int,    `requiredPrimitive` int,    `repeatedPrimitive` ARRAY
, `optionalMessage` STRUCT
, `requiredMessage` STRUCT
, `repeatedMessage` ARRAY
)STORED AS `PARQUET`LOCATION 'oss://oss://mybucket/my_new_table/'TBLPROPERTIES ( 'create.table.like.file' = 'oss://mybucket/my_new_table/')

例子2

我想针对OSS上的一个特定Parquet文件建表

  1. 目标表的名字为 my_new_table
  2. 该文件在OSS上的目录结构如下,且file1.parquet, file2.parquet和file3.parquet的schema结构不一样
oss://mybucket/my_new_table/file1.parquetoss://mybucket/my_new_table/file2.parquetoss://mybucket/my_new_table/file3.parquet
  1. 目标表期待的LOCATION为
oss://mybucket/my_new_table/file1.parquet

相应的在Data Lake Analytics中的建表语句如下:

CREATE EXTERNAL TABLE my_new_table LIKEMAPPING ('oss://mybucket/my_new_table/file1.parquet');

建表成功后,执行SHOW CREATE TABLE语句进行验证。

CREATE EXTERNAL TABLE `my_new_table` (    `optionalPrimitive` int,    `requiredPrimitive` int,    `repeatedPrimitive` ARRAY
, `optionalMessage` STRUCT
, `requiredMessage` STRUCT
, `repeatedMessage` ARRAY
)STORED AS `PARQUET`LOCATION 'oss://oss://mybucket/my_new_table/file1.parquet'TBLPROPERTIES ( 'create.table.like.file' = 'oss://mybucket/my_new_table/file1.parquet')

小结

  1. 对OSS数据源,CREATE EXTERNAL TABLE LIKE目前已经支持Parquet, ORC, JSON, Avro等格式。
  2. 对于目录结构中含有格式为 partCol=partVal 的分区目录,DLA也可以自动识别分区列。

转载地址:http://futrl.baihongyu.com/

你可能感兴趣的文章
Cocoa设计模式之KVC
查看>>
POJ 2063 Investment(完全背包)
查看>>
netmon工作原理
查看>>
通过python的import hooks实现像引用代码一样使用配置文件
查看>>
Google Code在Windows下面设置.netrc
查看>>
Oracle笔记(4):一个存储过程编写及C#调用
查看>>
在MyEclipse中配置Tomcat服务器
查看>>
2-SAT总结
查看>>
释放 Linux 系统预留的硬盘空间(转)
查看>>
MySQL安装出现的问题:the security settings could not be applied to 。。。 原因是原来的东西没有卸载干净...
查看>>
【OpenCV学习】极坐标变换
查看>>
OFBIZ 电子商城商品如何 进行多币种结算
查看>>
pyAggr3g470r 3.5 发布,新闻聚合器
查看>>
阅读短信
查看>>
【C】枚举用例分析
查看>>
一种设计数据库表的智能提示法
查看>>
【Shell脚本】合并行
查看>>
ORACLE同义词总结
查看>>
(转载)JavaScript大师Nicholas C. Zakas谈TypeScript
查看>>
2011蓝桥杯(高职)
查看>>