У меня есть набор данных, который был построен следующим образом:Спарк Сохранить DataSet partitionby Файл уже существует Ошибка
Encoder<MyDomain> encoder= Encoders.bean(MyDomain.class);
Dataset<MyDomain> stdDS = sc.createDataset(filteredRecords.rdd(), encoder);
Dataset<Row> rowDataset = stdDS.withColumn("idHash", stdDS.col("id").substr(0, 5));
Я затем пытается вывести набор данных, выполнив:
rowDataset.write().partitionBy("keep", "idHash").save("test.parquet");
Когда я раздел только на «держать» все работает правильно, то я разметить обоими «держать» и «idHash» я получаю:
File already exists: file:/C:/dev/test.parquet/_temporary/0/_temporary/attempt_201701191219_0001_m_000000_0/keep=true/idHash=0a/part-r-00000-2c2e0494-f6a7-47d7-88e2-f49dffb608d1.snappy.parquet
Как я могу получить свой DataSet для корректного вывода с использованием нескольких разделов. Папка пуста для начала. Также эта ошибка происходит, когда я запускаю на своей локальной машине, в производстве эти данные будут выводиться на S3, поэтому любое решение должно работать как с локальной файловой системой, так и с AWS S3.
Спасибо, Натан
ли вы попытайтесь поместить этот 'запись(). Режим ("добавить") или' записи(). Режим ("перезаписать") ' ? –
Я попытался добавить, но произошла одна и та же ошибка, я бы не подумал, что любой из них понадобится, поскольку для начала нет выходных данных. –
Вы получили решение? – rohitkulky