es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La tarea de flujo de datos falla porque no puede eliminar el archivo temporal.

DirectRunner hace el trabajo sin problemas, pero Dataflow falla consistentemente porque no puede eliminar y luego no puede renombrar archivos temporales.

Este es el mismo código exacto, mismo bucket, solo cambié los runners:

public static DataflowPipelineOptions setOptions() {
List experiments = new ArrayList(); // experiments debe ser una lista MUTABLE
experiments.add(“use_runner_v2”);

DataflowPipelineOptions options = PipelineOptionsFactory.as(DataflowPipelineOptions.class);

options.setRunner(DataflowRunner.class);
options.setProject(“{ID DE PROYECTO}”);
options.setJobName(“takt-dataflow-test”);
options.setTempLocation(bucketPath + “temp/”);
options.setStagingLocation(bucketpath + “staging/”);
options.setRegion(region);
options.setServiceAccount(serviceAccountEmail);
options.setExperiments(experiments);
options.setSubnetwork(subNetwork);

return options;
}

public static void main(String[] args) {

String bucketPath = “gs://mypathdelbucket/”;
DataflowPipelineOptions options = setOptions();
Pipeline p = Pipeline.create(options);
String inputPath = bucketPath + “input/test.csv”;
String outputPath = bucketPath + “output/”;
PCollection lines = p.apply(“ReadMyFile”, TextIO.read().from(inputPath));
lines.apply(“WriteMyFile”, TextIO.write().to(outputPath + “test.txt”));

p.run().waitUntilFinish();
}

Las variables no declaradas aquí son para anonimizar cosas que son en realidad strings. Escribo bucketpath directamente en setOptions, por eso no me molesto en pasarlo.

La diferencia entre DirectRunner y DataflowRunner es que comento la línea setRunner. DirectRunner funciona perfecto, Dataflow falla porque no puede eliminar archivos temporales del bucket.

¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema puede estar relacionado con los permisos en tu cubo (bucket). DirectRunner y DataflowRunner pueden tener diferentes permisos y niveles de acceso.

    Asegúrate de que la cuenta de servicio especificada en las opciones tenga los permisos necesarios para eliminar y renombrar archivos en las ubicaciones temporales y de puesta en escena (staging). También verifica si hay bloqueos de archivos o permisos que impiden que Dataflow elimine los archivos.

    Puedes intentar eliminar manualmente los archivos del cubo y ejecutar nuevamente Dataflow para ver si eso resuelve el problema. Si no, puede que necesites investigar más a fondo o comunicarte con el soporte de Google Cloud para obtener ayuda.

Comments are closed.