0

我是冰山的新手,我有一个关于查询大表的问题。

我们有一个 Hive 表,总共有 360 万条记录,每条记录有 120 个字段。而我们想把这张表中的所有记录都转移到其他数据库,比如pg、kafak等。

目前我们这样做:

 Dataset<Row> dataset = connection.client.read().format("iceberg").load("default.table");
// here will  stuck for a very long time
dataset.foreachPartition(par ->{
    par.forEachRemaining(row ->{
       ```
    });
});

但它可能会在 foreach 过程中卡住很长时间。

并且我尝试了下面的方法,进程并没有长时间卡住,但是遍历速度很慢,遍历效率在50条记录/秒左右。

HiveCatalog hiveCatalog = createHiveCatalog(props);
Table table = hiveCatalog.loadTable(TableIdentifier.of("default.table"));
CloseableIterable<Record> records = IcebergGenerics.read(table) .build();
records.forEach( record ->{
    ```
});

这两种方式都不能满足我们的需求,请问我的代码是否需要修改,或者有没有更好的方式遍历所有记录?谢谢!

4

0 回答 0