阿里云MaxCompute(ODPS)如何使用SQL同步数据(SQLTask模式)

本文介绍了如何使用阿里云MaxCompute(ODPS)的SQLTask模式来同步数据,尤其在需要联表过滤时。推荐通过SQLTask创建临时表再利用TableTunnel同步,这种方式实现成本低、可维护性好且性能优秀。但这种方式不支持分区,对于跨分区查询和大量数据下载可能效率较低。
摘要由CSDN通过智能技术生成

ODPS默认都是通过TableTunnel来获取数据,支持分区、续传等。但TableTunnel只支持单表,有时需要联表过滤数据就不能支持了。

官方提供了SQLTask模式来进行一些扩展。

思路

ODPS提供了两种方式来执行SQL:

  1. 直接使用SQLTask查询数据,但每次不支持超过10000行;

    未尝试能否通过多次执行task、每次task限定分页条件实现获取全部数据

  2. 通过SQLTask创建临时表,通过TableTunnel同步临时表;

推荐第二种方案,实现成本低、可维护性好、性能优秀。

示例代码

最低成本的代码改造思路:

  • 创建com.aliyun.odps.tunnel.TableTunnel通道,使用其createDownloadSession(String projectName, String tableName)方法下载表
    • 该步逻辑与一般通过TableTunnel下载单表相同
  • 调用上述方法时,传入的tableName不再是单表名,而是创建的临时表名
private String getRealName() {
   
        String table = generateTempName(), sql = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值