spark,读取和写入同一张表问题
读取a表,写入a表
1.写入的是分区表,不报错
2.读取上来之后,创建为临时视图temp,然后先写入a表,再使用temp,就会报错
解决办法:可以先使用temp,再写入a表
3.写入的不是分区表,会报错
解决办法:先把数据收集到Driver,创建临时视图,再写入a表
4.万能解决办法:先把数据收集到Driver,创建临时视图,再写入a表
Dataset<Row> dataset = spark.sql(get_new_id_Sql());
StructType schema = dataset.schema();
List<Row> rows = dataset.collectAsList();
spark.createDataFrame(rows, schema).createOrReplaceTempView("all_data");
insert overwrite table ods.a
select * from all_data
可能的原因:spark是移动数据不如移动计算,所以数据的路径还是a表,如果收集到Driver,路径就不是a表了