Хотя разъем Phoenix действительно поддерживает только SaveMode.Overwrite
, реализация не соответствует стандарту Spark, , в котором говорится, что :
Режим перезаписи означает, что при сохраненииDataFrame для источника данных, если данные / таблица уже существуют, ожидается, что существующие данные будут перезаписаны содержимым DataFrame
Если вы отметите источник , вы будетевидите, что saveToPhoenix
просто вызывает saveAsNewAPIHadoopFile
с PhoenixOutputFormat
, , что
внутренне создает запрос UPSERT для вас
Другими словамиSaveMode.Overwrite
с разъемом Phoenix на самом деле UPSERT
.