Итак, я выполняю несколько действий gpload параллельно через код java и сталкиваюсь со следующей проблемой:
Первый поток вызывает gpload для загрузки файла: table1_1234.unl Второй поток вызывает gpload для загрузки файла: table2_5678.unl
Первое действие выполняется без ошибок, а ниже приведены журналы gpload
2020-05-31 02:00:30|INFO|gpload session started 2020-05-31 02:00:30
2020-05-31 02:01:56|INFO|started gpfdist -p 8081 -P 9081 -f "/data/pathToUnlFiles/340/table1/**table1_1234.unl**" -t 30
2020-05-31 02:03:41|INFO|reusing staging table staging_gpload_reusable_53ec477c694e03c250b2c12f9bb381bd
2020-05-31 02:03:42|INFO|did not find an external table to reuse. creating "gpdb_cards_1240".ext_gpload_reusable_2d9038c6_a31d_11ea_9c16_246e96bddcd8
2020-05-31 02:05:21|INFO|running time: 290.69 seconds
2020-05-31 02:05:21|INFO|rows Inserted = 0
2020-05-31 02:05:21|INFO|rows Updated = 8
2020-05-31 02:05:21|INFO|data formatting errors = 0
2020-05-31 02:05:21|INFO|gpload succeeded
Однако второе действие не выполняется со следующими журналами
2020-05-31 02:02:22|INFO|gpload session started 2020-05-31 02:02:22
2020-05-31 02:03:54|INFO|started gpfdist -p 8081 -P 9081 -f "/data/pathToUnlFiles/346/table2/**table2_5678.unl**" -t 30
2020-05-31 02:03:54|INFO|did not find an external table to reuse. creating "gpdb_cards_1246".ext_gpload_reusable_708f2128_a31d_11ea_a649_246e96bddf58
2020-05-31 02:03:55|WARN|8 bad rows
2020-05-31 02:03:55|WARN|Please use following query to access the detailed error
2020-05-31 02:03:55|WARN|select * from gp_read_error_log('"gpdb_cards_1246".ext_gpload_reusable_708f2128_a31d_11ea_a649_246e96bddf58') where cmdtime > to_timestamp('1590915742.6')
2020-05-31 02:03:55|INFO|running time: 92.61 seconds
2020-05-31 02:03:55|INFO|rows Inserted = 0
2020-05-31 02:03:55|INFO|rows Updated = 0
2020-05-31 02:03:55|INFO|data formatting errors = 8
2020-05-31 02:03:55|INFO|gpload succeeded with warnings
После дальнейшего исследования с помощью вышеприведенного запроса предоставьте: ( выберите * from gp_read_error_log ('"gpdb_cards_1246" .ext_gpload_reusable_708f2128_a31d_11ea_a649_246e96bddf742 *), где cm_time следующий результат
cmdtime | 2020-05-31 02:03:55.087032-07
relname | ext_gpload_reusable_708f2128_a31d_11ea_a649_246e96bddf58
filename | gpfdist://sgpdbsprlsss:8XX1//data/pathToUnlFiles/346/**table2/table2_5678.unl**/ [/data/pathToUnlFiles/340/**table1/table1_1234.unl**]
linenum | 1
См. столбец filename показывает имена файлов обоих потоков, каким-то образом он смешивает / объединяет их.
Любая помощь приветствуется в связи с этим, почему утилита GPLOAD ведет себя так.
Ниже приведен файл yaml
VERSION: 1.0.0.1
DATABASE: gpdb
USER: XXXXXX
HOST: xx.xx.xx.xx
PORT: 5432
GPLOAD:
INPUT:
- SOURCE:
LOCAL_HOSTNAME:
- XXXXXXXXX
PORT_RANGE: [8081,9081]
FILE:
- /data/pathToUnlFiles/346/table2/table2_5678.unl
- COLUMNS:
- Columns here
- FORMAT: text
- DELIMITER: '|'
- NULL_AS: ''
- ERROR_LIMIT: 100
- LOG_ERRORS: true
EXTERNAL:
- SCHEMA: '%'
OUTPUT:
- TABLE: table2
- MODE: INSERT
- MATCH_COLUMNS:
- column here
- UPDATE_COLUMNS:
- columns here
PRELOAD:
- TRUNCATE: false
- REUSE_TABLES: true