You need to enable JavaScript to run this app.
导航
EMR Hive 大数据量表查询结果下载流程
最近更新时间:2025.01.22 17:51:51首次发布时间:2025.01.22 17:41:58

DataLeap 项目控制台中,目前数据开发允许下载的查询结果最大记录为 30 万行数据,但在众多业务场景中,通常有超过 30 万行数据需下载至本地进行分析的场景。
本文将为您介绍如何在 DataLeap 数据开发中下载超过 30 万行数据的实操流程。

1 新建临时查询节点

  1. 进入 DataLeap 数据开发界面。
  2. 任务开发界面,左侧导航栏中,单击临时查询按钮,进入临时查询页面。
  3. 在临时查询界面创建 EMR Hive SQL 查询任务。

Image

2 SQL 开发

2.1 创建数据接收目标 Hive 表

  1. 在临时查询 SQL 界面,将业务方提供的查询 SQL,复制到节点中:

    -- 假设存在三个表:
    -- 表 orders 包含订单信息,有 order_id, customer_id, order_date 等字段
    -- 表 customers 包含客户信息,有 customer_id, customer_name, customer_email 等字段
    -- 表 order_details 包含订单明细信息,有 order_id, product_id, quantity 等字段
    
    SELECT 
        o.order_id, 
        c.customer_name, 
        c.customer_email, 
        od.product_id, 
        od.quantity
    FROM 
        orders o
    JOIN 
        customers c ON o.customer_id = c.customer_id
    JOIN 
        order_details od ON o.order_id = od.order_id
    WHERE 
        o.order_date >= '2025-01-01' 
        AND o.order_date <= '2025-03-31'
        AND c.customer_name LIKE '%John%'
    ORDER BY 
        o.order_date DESC;
    
  2. 单击界面表管理 > 快速建表按钮,可根据 SQL 内容,跳转到数据地图界面进行目标表创建。
    Image

    说明

    当 SQL 仅包含 Select 语句时,方可借助快速建表功能,直接提取 SQL 中的表字段信息。

  3. 新建表界面选择目标 EMR 集群、库表名等信息,并将存储格式选择为 Text 格式,以便于后期通过 TOS 控制台下载数据后,能够更便捷地在本地打开并进行分析。

  4. 表信息填写完成后,单击最下方提交按钮,完成表创建。

2.2 目标表写入数据

  1. 返回临时查询界面,在 SQL 节点中,编辑数据写入逻辑,示例如下:

    SET hive.execution.engine=tez;
    SET hive.merge.tezfiles=true;
    SET hive.merge.size.per.task=268435456;  -- 256MB
    SET hive.merge.smallfiles.avgsize=16777216;  -- 16MB
    
    --插入数据到 hive_on_tos_db.hive_on_tos_table 示例目标表;
    INSERT INTO hive_on_tos_db.hive_on_tos_table
    SELECT 
        o.order_id, 
        c.customer_name, 
        c.customer_email, 
        od.product_id, 
        od.quantity
    FROM 
        orders o
    JOIN 
        customers c ON o.customer_id = c.customer_id
    JOIN 
        order_details od ON o.order_id = od.order_id
    WHERE 
        o.order_date >= '2025-01-01' 
        AND o.order_date <= '2025-03-31'
        AND c.customer_name LIKE '%John%'
    ORDER BY 
        o.order_date DESC;
    
    --查询 hive_on_tos_db.hive_on_tos_table 表数据量
    Select count(*) from hive_on_tos_db.hive_on_tos_table;
    

    SET 参数说明如下:

    参数名称

    说明

    hive.execution.engine

    指定 Hive 的执行引擎,tez 表示使用 Apache Tez 作为 Hive 的执行引擎。

    hive.merge.tezfiles

    是否合并任务执行后所产生的结果文件:

    • true:表示合并
    • false:表示不合并

    hive.merge.size.per.task

    任务在合并数据结果文件时的期望文件大小,单位为 字节,如 268435456 字节,即 256 MB,会使合并后的文件大小尽量达到 256 MB。

    hive.merge.smallfiles.avgsize

    指定需要被合并的平均文件大小的阈值,单位为 字节,如 16777216 字节,即 16 MB,当结果文件平均大小小于 16 MB时,便会触发文件合并操作。

  2. SQL 编辑完成后,单击编辑栏上方的调试按钮,等待调试执行完成,在下方调试记录中查看 Hive 表中的数据量是否符合预期。
    Image

2.3 确认 Hive 表存储路径

参考1 新建临时查询节点步骤,新建查询节点,并在 SQL 界面中编辑并执行以下语句:

show create table hive_on_tos_db.hive_on_tos_table;

调试运行后,您便可在调试结果页中,查看 Hive 表存储的路径信息:
Image

3 TOS 下载数据

临时查询调试执行成功后,您便可前往 TOS 控制台,在对应 Bucket 路径下,下载 Hive 表全量数据。

  1. 登陆 TOS 控制台
  2. 并在桶列表中,依次进入到存放 Hive 表的 TOS Bucket 及下级库表路径。
    Image
  3. 在具体表数据界面,单击操作列中的下载按钮,便可将 Hive 表全量数据下载至本地进行分析。

    说明

    由于在执行 EMR Hive SQL 任务的数据写入操作时,该任务会被解析为一系列的 MapReduce 任务。基于 Reduce 规则,不同的数据量执行后会生成多个数据结果文件,您可根据实际场景,通过上述 SET 参数进行文件合并;您也可以将这些多个文件全部下载至本地,然后再进行相关操作。

    Image
  4. 查看下载结果数据量,是否与 SQL 查询结果一致。
    Image