spark报错:Cannot overwrite a path that is also being read from.
Cannot overwrite a path that is also being read from.
这个错看起来很简单。代码简化为
Dataset<Row> selectBefore = session.sql("select * from table1")
Dataset<Row> dataset2 = session.createDataset(list,xx.class)
大概就是获取表里的原始数据,然后从别的地方搞来的新数据两个合起来继续存到表里去
selectBefore .union(dataset) .write() .mode(SaveMode.Overwrite) .format("hive") .insertInto(Constant.ORDERONLINE_TABLE);
为啥不用append 因为有时候会重复调用。。 反正就是这么个情况。就是要先查再插入。
为什么报错?
解决办法
第一个解决办法真不行。我查了下这两个参数大多是解决spark读取hive表数据量不对的情况用的。而且我设置之后还有报错就不贴出来了
第二个 确实可以。
session.sparkContext().setCheckpointDir("/tmp/spark/job/OrderOnlineSparkJob");
Dataset<Row> selectBefore = session.sql("select * from table1").checkpoint();
第三个这种lowb方法就不说了
找个时间好好学习下spark的checkpoint知识。
下一篇:
k8s-nfs-server安装及使用