You need to enable JavaScript to run this app.
导航
3.3.12 LarkSheet-Hive
最近更新时间:2022.09.07 11:35:19首次发布时间:2022.09.07 11:35:19
我的收藏
有用
有用
无用
无用
1 使用场景

将指定飞书表格中的一个sheet(电子表格)同步至Hive中,以便进行后续的离线分析。
示例任务请见下图:

2 前提条件(使用前必看)

2.1 概念解析

  • 飞书表格

    通过在飞书云文档右上角点击『 新建 』按钮,选择『 新建表格 』,创建出来的表格云文档。如下图所示:


    特别注意: 在普通云文档中插入的表格(如下图所示),不属于『 飞书表格 』,不能使用本通道进行导出Hive。

  • sheet

    每个飞书表格可以包含一个或者多个sheet,本通道要导出的单位为 sheet , 如果你的表格包含多个sheet,且均需要导出至Hive,则需要配置多个『LarkSheet->Hive』通道任务。
      如下图所示,该表格包含2个sheet:

  • sheetId

    用来在同一个飞书表格中唯一标识一张sheet。当飞书表格存在多个sheet时,点击不同的sheet,在浏览器地址栏会显示出不同的sheetId。如上图所示,sheet1的sheetId为:6471d5

    特别注意: 当表格存在多张sheet, 一定要提供带有sheetId的表格链接 ,才能让DataLeap精确定位到要导出哪一张sheet。如不提供sheetId,默认导出第一张sheet

  • 表格owner

    拥有对表格的所有权限,可以点击表格右上角『 ··· 』,选择『 文档信息 』查看表格owner。如下所示:

  • 表格协作者

    拥有对表格的部分权限,如阅读或者编辑。可以从表格右上角『 分享 』按钮来查看协作者,协作者可以有用户和群聊两种。

  • 表头

    飞书表格没有表头的概念,但为了『LarkSheet->Hive』通道任务具有更好的规范性,我们约定:
     sheet的第一行会作为表头 。 表头需要是:从A1单元格开始的、连续的、非空的、不能重名的一系列单元格。 表头只用于做字段映射,不会参与数据传输。

    特别注意: 在任务正常上线后,需要保证表头的稳定,不要轻易修改表头。任务实例执行前会进行表头校验,如出现坏表头或者跟dorado字段映射对不齐,则会主动报错。

    比如表头行数据如下:
      非法表头(D列为空)

    A

    B

    C

    D

    E

    F

    1

    姓名

    年龄

    爱好

    学校


    非法表头(A列为空)

    A

    B

    C

    D

    E

    F

    1

    姓名

    年龄

    爱好

    学校


    非法表头(B、D列名重复,均为“爱好”)

    A

    B

    C

    D

    E

    F

    1

    姓名

    爱好

    年龄

    爱好


    以下是一个合法的表头(ABCD四列可以导入到hive)

    A

    B

    C

    D

    E

    F

    1

    姓名

    年龄

    爱好

    学校

2.2 使用前表格配置

2.2.1 将表格分享给DTS机器人

要顺利使用『LarkSheet->Hive』通道功能,需要『 表格owner 』主动将文档分享『 DTS机器人 』。

注意:一定得是表格owner,才有权限进行分享,表格协作者无法进行此操作。

具体分享步骤如下:

  1. 点击表格右上角『 ··· 』设置按钮,在弹出的面板中,选择『更多』,接着选择『添加文档应用』

  2. 在弹出的面板中,找到『 DTS机器人 』应用,或者直接输入“DTS机器人”进行搜索,在结果中点击『 DTS机器人 』

  3. 点击『 DTS机器人 』之后,在右边选择你要授予的权限,我们选择『 可阅读 』即可。之后点击右下角『 添加 』按钮,即完成了将该表格分享给『 DTS机器人 』。

2.2.2 确认你是否在表格的协作者列表中

数据开发产品通过表格的协作者列表来作为鉴权。这意味着如果您不在表格的协作者列表(以群聊方式出现在协作者列表里不算),则不能进行任务创建、任务调试、任务上线等操作。 特别的,如果您是表格owner,表格owner已经是协作者,因此不需要此步骤。
如果您不是表格owner,则需要您成为表格的协作者,需要让表格owner主动添加您为协作者。操作步骤如下图所示:

如果是从群聊中获取的表格权限,则你本身并不会出现在协作者列表,协作者列表中仅仅是该群聊,目前飞书Open API暂不支持群聊鉴权的打平,因此如果你是在群聊中的协作者,则无法通过DataLeap鉴权。

3 操作指南

3.1 任务配置

3.1.1 选择数据源

3.1.2 字段映射


由于目前表格无schema等强约束,因此为了保证导数的完整性,要求待导入的hive字段只能为string字段,因此字段映射时只能选择string类型的字段。

3.1.3 高级参数设置(可选)

由于飞书表格存在大小限制(不能超过100万单元格),因此整体数据量不会很大, 推荐使用默认设置即可 ,您无需关心高级参数设置 。
如果您确实有性能上的需求,想让导数更快,则可开启高级参数设置,并设置以下几个参数:

  1. 读入并发度:默认为1,对于绝大多数任务1就足够了,最高不能超过5。

  2. job.reader.batch_size:从飞书open api单次获取的行数,默认为1000行,不能超过5000。调高此值,可以带来导数效率的提升。

3.2 后续步骤

  • 调度设置

  • 运行监控(报警)设置

  • 历史版本

  • 任务常用操作

3.3 注意事项

  • 因飞书表格改动成本较低,很有可能出现表头行被修改。任务上线后,请务必保证表头与任务配置保持一致,如果发生表头的变化,请到Dorado上重新进行字段映射并上线,否则任务可能会失败。

  • 为保证数据的正确性及可解释性,表格中不要出现合并单元格。

4 常见问题
  1. 可以选择性地只导入飞书的部分列吗?

    A:可以的 ,可以在字段映射中删除部分列。

  2. 飞书表头字段有啥特殊限制吗?

    A:前后不要出现空格、制表符等不可见字符。

  3. 为什么字段映射时选不了hive某些字段?

    A:请先确认该字段是否真实存在,再确认该字段是否为string类型。

  4. 目前支持公式的导入吗?

    A:已支持,默认开启 。

  5. 点击表格分享,看不到『设置』按钮

    A:只有表格owner才能进行设置,意味着只有表格owner才能将文档分享给『DTS机器人』

  6. 怎么在浏览器地址栏看不到sheetId啊?

    A:如果你的表格只包含1个sheet,则地址中并不会出现sheetId,此时dorado任务飞书链接也不需要sheetId。 如果包含多个sheet,可以点击不同的sheet,浏览器地址栏会出现sheetId

  7. 如果在飞书里新增了字段,不管字段的顺序加在哪里,都可以正常导入hive表,并且不会影响现有已经导入飞书的字段吧?

    A:不会,以任务配置的字段映射为准。举个例子,在不改字段名的前提下,Dorado 只校验飞书表格里的字段名,不看这个字段具体在哪一列,即使后面移动了顺序,也能保证正常导入进来。

  8. 导入的字段不是纯文本,该怎么解决?

    A:比如导入后的字段变成下图这种:

    在任务的高级参数设置中,新增一个高级参数: job.reader.lark.valueRenderOption=ToString 。如下图所示: