我是冰山的新手,我有一个关于查询大表的问题。
我们有一个 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 ->{
```
});
这两种方式都不能满足我们的需求,请问我的代码是否需要修改,或者有没有更好的方式遍历所有记录?谢谢!