GPLOAD иногда объединяет файл при запуске в параллельных потоках - PullRequest
0 голосов
/ 13 июля 2020

Итак, я выполняю несколько действий 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

1 Ответ

0 голосов
/ 13 июля 2020

Если вы запускаете gpload параллельно, я бы проверил, что ваш код java создает yaml с разными портами.

...