今天晚上,我们的Google存储空间转移作业尚未完成。他们要么停留在“正在计算...”,要么进度为0%。
作为我们数据管道中的一步,我们正在使用Google Storage Transfer Jobs在S3之间将数据传输到Google Cloud Storage(GCS)。我们为一堆存储桶和文件设置了每日传输作业。但是,今晚什么都没完成。
要对其进行故障排除,我们尝试取消所有现有作业,然后创建一个新作业,该作业将文件从GCS中的一个存储桶传输到另一个存储桶。那也卡在了“计算中……”
有人经历过类似的事情吗,怎样使它再次工作?
答案 0 :(得分:0)
由于我们不知道Oakinlaja所提到的停机时间,我们决定为此找到另一种解决方案。
我们已经有几个Spark任务可以清理数据,因此我们重写了这些任务,也将数据从S3传输到GCS,如this article中所述。
我们基本上设置了AWS配置(请注意,由于我们无法同时使用SparkContext和SparkSession,因此需要使用spark.sparkContext
)
val accessKeyId = System.getenv("AWS_ACCESS_KEY_ID")
val secretAccessKey = System.getenv("AWS_SECRET_ACCESS_KEY")
spark.sparkContext.hadoopConfiguration.set("fs.s3n.awsAccessKeyId", accessKeyId)
spark.sparkContext.hadoopConfiguration.set("fs.s3n.awsSecretAccessKey", secretAccessKey)
,然后直接从S3中读取数据:
val data_frame = spark.read.json("s3n://bucket/file-prefix/" + LocalDateTime.now.minusHours(24).format(DateTimeFormatter.ofPattern("YYYY/MM/dd")) + "/*/*.gz")
此后,我们先将数据展平,然后再执行其他一些步骤,然后再将其写入GCS,然后在另一步骤中将数据上传到BigQuery。
话虽如此,真是太奇怪了,很难获得有关这种中断的任何信息,而又没有关于他们是否在解决此故障的信息。