文档首页> 数据湖探索 DLI> 最佳实践> 数据分析> 使用DLI将CSV数据转换为Parquet数据
更新时间:2023-07-26 GMT+08:00

使用DLI将CSV数据转换为Parquet数据

应用场景

Parquet是面向分析型业务的列式存储格式,这种格式可以加快查询速度,查询Parquet格式数据时,只检查所需要的列并对它们的值执行计算,也就是说,只读取一个数据文件或表的一小部分数据。Parquet还支持灵活的压缩选项,因此可以显著减少磁盘上的存储。使用DLI可轻松将CSV格式数据转换为Parquet格式数据。

方案架构

将CSV格式的数据上传到对象存储服务OBS,使用DLI将CSV数据转换为Parquet数据,并将转换后的Parquet数据存储到OBS中。

图1 方案简介

流程指导

使用DLI将CSV数据转换为Parquet数据主要包括以下步骤:

步骤1:创建并上传数据。将数据上传到对象存储服务OBS。

步骤2:使用DLI将CSV数据转换为Parquet数据。将CSV数据导入DLI,并将CSV数据转换为Parquet数据。

方案优势

  • 提升查询性能

    如果您在HDFS上拥有基于文本的数据文件或者表,而且正在使用Spark SQL对数据执行查询操作,那么推荐将文本数据文件转换为Parquet数据文件,转换需要时间,但查询性能的提升在某些情况下可能达到约30倍或更高。

  • 节省存储空间

    Parquet还支持灵活的压缩选项,因此可以显著减少磁盘上的存储。存储的节省可高达约75%。

资源和成本规划

表1 资源和成本规划

资源

资源说明

成本说明

OBS

需要创建一个OBS桶将数据上传到对象存储服务OBS,为后面使用DLI完成数据分析做准备。

OBS的使用涉及以下几项费用:

  • 存储费用:静态网站文件存储在OBS中产生的存储费用
  • 请求费用:用户访问OBS中存储的静态网站文件时产生的请求费用
  • 流量费用:用户使用自定义域名通过公网访问OBS时产生的流量费用

实际产生的费用与存储的文件大小、用户访问所产生的请求次数和流量大小有关,请根据自己的业务进行预估。

DLI

在创建SQL作业前需购买队列,使用DLI的队列资源时,按照队列CU时进行计费。

如购买按需计费的队列,在使用队列资源时,按照队列CU时进行计费。

以小时为单位进行结算。不足一小时按一小时计费,小时数按整点计算。队列CU时按需计费的计算费用=单价*CU数*小时数。

步骤1:创建并上传数据

  1. 创建CSV数据,例如,如图2所示test.csv:
    图2 创建test.csv文件
  2. 在OBS上建桶obs-csv-parquet,并将test.csv文件上传至OBS,如图3所示:
    图3 上传CSV数据至OBS
  3. 在OBS上创建一个新的桶obs-parquet-data用于存储转换的Parquet数据。

步骤2:使用DLI将CSV数据转换为Parquet数据

  1. 在DLI控制台总览页面左侧,单击“SQL编辑器”,进入SQL作业编辑器页面。
  2. 在SQL作业编辑器左侧,选择“数据库”页签,单击创建名字为demo的数据库。
  3. 在DLI的SQL编辑窗口,执行引擎选择“spark”,队列选择“default”,数据库选择为“demo”。输入以下建表语句,创建OBS表test_csv_hw并导入test.csv数据。
    create table test_csv_hw(id1 int, id2 int, id3 int, id4 int, id5 int)
     using csv
     options(
     path 'obs://obs-csv-parquet/test.csv'
     )
  4. 在DLI的SQL编辑窗口,执行以下语句可以查询表test_csv_hw中的数据。
    图4 查询表test_csv_hw
  5. 在DLI的SQL编辑窗口中创建OBS表test_parquet_hw。
    create table `test_parquet_hw` (`id1` INT, `id2` INT, `id3` INT, `id4` INT, `id5` INT)
    using parquet
    options (
    path 'obs://obs-parquet-data/'
    )

    不需要指明具体的文件,因为在将数据从CSV格式转换为Parquet格式之前,不存在任何Parquet文件。

  6. 在DLI的SQL编辑窗口中将CSV数据转换为Parquet数据并存储在OBS中。
    insert into test_parquet_hw select * from test_csv_hw
  7. 检查结果,如图5所示,系统自动创建了一个文件用于保存结果。
    图5 保存Parquet数据