Я намереваюсь запустить программу на С ++ на спарк с использованием оператора rdd.pipe (), чтобы увидеть возможные преимущества параллельной работы программы.
В терминале я запускаю это так:
./program program_mode -t input -i output
В драйвере искры я попытался:
mapDataset.pipe(s"/path/to/program program_mode -t $mapDataset -i /path/to/output"
где mapDataset — это входной rdd (тип .fasta-файл), который я успешно загрузил в драйвер spark, но это не работает.
Общая проблема заключается в том, что программа ожидает ввода через флаги, но в искре ввод находится в rdd, который я создал, для которого вызывается канал.
Любая идея о том, как я могу правильно реализовать это сообщение?
Если ваша программа использует потоки, измените ее поведение.
Вместо открытия ifstream
для файла, когда он находится в командной строке, введите stdin
к вашим функциям. То же самое для выходного потока.
Других решений пока нет …