Поток данных для чтения из облачного хранилища Google на локальный компьютер

Я попытался выполнить задание потока данных для чтения из облачного хранилища Google и записи на локальный компьютер. Я использовал DirectPipelineRunner. Работа выполнена успешно. Но я не вижу файлов, написанных на моей локальной машине. Должен ли я указать какой-либо ip/hostname вместе с моим локальным местоположением, соответствующим выходному параметру location? Как мне указать местоположение на моем локальном компьютере?

Команда ниже:

gcloud dataflow jobs run sampleJobname1 --gcs-location gs://bucket/templatename1 --parameters inputFilePattern=gs://samplegcsbucket/abc/*,outputLocation=C:\data\gcp\outer,runner=DirectPipelineRunner

КОД:

PCollection<String>  textData =pipeline.apply("Read Text Data", TextIO.read().from(options.getInputFilePattern()));
    textData.apply("Write Text Data",TextIO.write().to(options.getOutputLocation()));

1 ответ

Причина, по которой это может работать как задание потока данных, предназначена для ввода и вывода в облачные сервисы.

Если вы хотите писать на свой локальный компьютер, вы можете использовать простую функцию, которая может принимать строковые данные и возвращать Void. Здесь вы можете написать свой собственный код Java для сохранения файлов на вашем локальном компьютере. Вы должны запустить этот поток данных, используя directrunner.

@SuppressWarnings("serial")
public static class SaveFileToLocal extends SimpleFunction<String>, Void> {

    @Override
    public KV<String, String> apply(KV<String, Iterable<String>> input) {

        String file_contents : input.getValue()

        // CODE TO WRITE THE TEXT TO LOCAL PATH
    }
}

Если вам все еще не удается достичь этого, используя вышеуказанный подход, я бы предложил использовать API облачного хранилища и выполнить то же самое с использованием кода Python или PHP.

Другие вопросы по тегам