小哇牛 2021-06-19 11:29 采纳率: 0%
浏览 23

carbondata多线程执行单表segment合并时并发相关的问题?

功能

每天晚上对单表前一天的segment进行定制化合并.

现有逻辑:

1.使用apache.caacite.avatica.remote.Driver获取connection。

2.获取对应表所有segment,定制化分组

3.sql形式执行merge segments(compact)

瓶颈:

1.近期发现该功能每次执行时长过长,需要优化。

2.本人对carbondata的了解不深,网上对这一块的描述有很少。

 

暂时的思路:

多线程执行合并操作。

 

问题:

1. 单表的并发,官网描述很少,只是说明了一个参数指定local_lock还是hdfs_lock(global)。对于我这种只操作segment的操作是锁全表,还是锁对应的需要合并的segments?

2. 一旦使用并发,就要考虑connection的获取甚至重用。carbonData对于这种jdbc的connection数量有限制吗?或者可以参考那个配置参数吗?

3. 这种任务的提交会被yarn调度吗?需要考虑任务提交的数量吗?考虑的话这个临界值需要参考什么?

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-14 21:22
    关注

    感谢您的提问。针对您的问题,我的回答如下:

    1. 在单表并发的情况下,CarbonData会锁定需要合并的segments,而不是锁定整张表。您可以在CarbonData的配置文件中,通过配置carbon.lock.type参数来指定锁类型,如果设置为local_lock表示使用本地锁机制,如果设置为hdfs_lock则表示使用全局锁机制。

    2. CarbonData对于jdbc的connection数量没有限制,但是您需要考虑到并发的场景下,connection的获取和重用问题,可以使用连接池机制来管理连接。您可以通过配置carbon.pool.size参数来控制连接池的大小。

    3. 任务提交是否会被yarn调度,需要您的具体情况来确定。如果您的任务量较大,可以考虑使用yarn来管理任务,通过配置yarn.scheduler.minimum-allocation-mbyarn.scheduler.maximum-allocation-mb参数来控制任务的内存分配。临界值需要根据您的应用场景和硬件资源来确定。

    希望我的回答对您有所帮助,如有任何疑问,请随时追问。

    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题