Поток данных для чтения из облачного хранилища 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.