Добавление UUID в имя файла при потоковой передаче через StreamSets Data Collector - PullRequest
3 голосов
/ 18 мая 2019

Я использую источник HttpClient для потоковой передачи файла из URL-адреса HTTP в место назначения Hadoop, но к имени файла в месте назначения добавляется некоторый случайный идентификатор uuid.Я хочу, чтобы имя файла было таким, как оно есть в источнике.

Пример: имя исходного файла - README.txt, имя файла назначения - README_112e5d4b-4d85-4764-ab81-1d7b6e0237b2.txt

Я хочу, чтобы имя файла назначения было README.txt

Я покажу вам свою конфигурацию.

HTTP Client :

General

Name : HTTP Client 1

Description : 

On Record Error : Send to Error

HTTP

Resource URL : http://files.data.gouv.fr/sirene/README.txt

Headers : 

Mode : Streaming

Per-Status Actions

HTTP Statis Code : 500 | Action for status : Retry with exponential backoff |

Base Backoff Interval (ms) : 1000 | Max Retries : 10

HTTP Method : GET

Body Time Zone : UTC (UTC)

Request Transfert Encoding : BUFFERED

HTTP Compression : None

Connect Timeout : 0

Read Timeout : 0

Authentication Type : None

Use OAuth 2

Use Proxy

Max Batch Size (records) : 1000

Batch Wait Time (ms) : 2000

Pagination

Pagination Mode : None

TLS

UseTLS

Timeout Handling

Action for timeout : Retry immediately

Max Retries : 10

Data Format

Date Format : Text

Compression Format : None

Max Line Length : 1024

Use Custom Delimiter

Charset : UTF-8

Ignore Control Characters

Logging 

Enable Request Logging

Hadoop FS Destination :

General

Name : Hadoop FS 1

Description : Writing into HDFS

Stage Library : CDH 5.10.1

Produce Events

Required Fields

Preconditions

On Record Error : Send to Error

Output Files

File Type : Text Files

Files Prefix : README

File Suffix : txt

Directory in Header

Directory Template : /user/username/

Data Time Zone : UTC (UTC)

Time Basis : ${time:now()}

Max Records in File : 0

Max File Size (MB) : 0

Idle Timeout : ${1 * HOURS}

Compression Codec : None

Use Roll Attribute

Validate HDFS Permissions : ON

Skip file recovery

Late Records

Late Record Time Limit (secs) : ${1 * HOURS}

Late Record Handling : Send to error

Data Format

Data Format : Text

Text Field Path : /text

Record Separator : \n

On Missing Field : Report Error

Charset : UTF-8

1 Ответ

1 голос
/ 21 мая 2019

Вы можете настроить префикс и суффикс имени файла, но удалить UUID невозможно.

Во многих случаях каталог является наименьшей полезной сущностью файловой системы в Hadoop.Поскольку файлы могут записываться одновременно несколькими клиентами, а файлы могут быть «свернуты» (текущий выходной файл закрыт и новый файл открыт) по эксплуатационным причинам, таким как размер файла, превышающий заданный порог, Data Collector гарантирует, что имена файлов являются уникальными дляизбежать случайной потери данных.

Существует обходной путь, если вы действительно хотите сделать это: включите события в месте назначения Hadoop и используйте Исполнитель метаданных файла HDFS для переименованияфайл.См. Это пример использования управления выходными файлами для получения дополнительной информации.

...