/my/hdfs/file/path.json上没有租约:文件不存在

时间:2019-04-11 12:37:33

标签: java apache-spark apache-kafka

我正在使用Spark结构化流从Kafka中读取消息,消息包含包含JSON文件的zip文件的路径,我将JSON并通过以下代码将其写入HDFS:

首先,我正在为kafka创建readStream。

    Dataset<Row> dsRow = spark.readStream()
                              .format("kafka")
                              .options(/*KAFKA OPTIONS - Servers etc*/)
                              .load();

然后,我为ForeachQuery创建writeStream


dsRow.writeStream()
     .queryName("ForEachQuery")
     .outputMode(OutputMode.Update())
     .foreach(writer)
     .start()
     .awaitTermination();

我的作家像:

    ForeachWriter<Row> writer = new ForeachWriter() {

             @Override
             public void process(Row arg0) {
                 //Here I'm extracting the ZIP content (JSON files) to HDFS.
             }

             @Override 
             public boolean open(long arg0, long arg1) { return true; }

             @Override 
             public void close(long arg0, long arg1) {  }

    }

我的问题有时是出现以下异常:

  

在/user/myuser/path/filefromzip.json(inode 1815182)上没有租约:文件   不存在。持有人DFSClient_NOMAPREDUCE_1932232_180没有   任何打开的文件。

我知道发生这种情况是因为我并行工作,但是我该如何解决呢? 也许是因为重复处理?如果是这样,如何防止使用open方法?

谢谢。

0 个答案:

没有答案