Проблемы при записи данных в Delta Lake в блоках данных Azure (обнаружен несовместимый формат)

Мне нужно прочитать набор данных в DataFrame, а затем записать данные в Delta Lake. Но у меня есть следующее исключение:

AnalysisException: 'Incompatible format detected.\n\nYou are trying to write to `dbfs:/user/[email protected]/delta/customer-data/` using Databricks Delta, but there is no\ntransaction log present. Check the upstream job to make sure that it is writing\nusing format("delta") and that you are trying to write to the table base path.\n\nTo disable this check, SET spark.databricks.delta.formatCheck.enabled=false\nTo learn more about Delta, see https://docs.azuredatabricks.net/delta/index.html\n;

Вот код, предшествующий исключению:

from pyspark.sql.types import StructType, StructField, DoubleType, IntegerType, StringType

inputSchema = StructType([
  StructField("InvoiceNo", IntegerType(), True),
  StructField("StockCode", StringType(), True),
  StructField("Description", StringType(), True),
  StructField("Quantity", IntegerType(), True),
  StructField("InvoiceDate", StringType(), True),
  StructField("UnitPrice", DoubleType(), True),
  StructField("CustomerID", IntegerType(), True),
  StructField("Country", StringType(), True)
])

rawDataDF = (spark.read
  .option("header", "true")
  .schema(inputSchema)
  .csv(inputPath)
)

# write to Delta Lake
rawDataDF.write.mode("overwrite").format("delta").partitionBy("Country").save(DataPath) 

person Themis    schedule 16.07.2019    source источник
comment
В чем ценность DataPath? Глядя на путь в сообщении об ошибке, он выглядит неверным. Вы пробовали использовать такое расположение dbfs, как «/ test / deltalaketest».   -  person simon_dmorias    schedule 16.07.2019


Ответы (1)


Это сообщение об ошибке сообщает вам, что данные по пути назначения уже есть (в данном случае dbfs:/user/[email protected]/delta/customer-data/), и что эти данные не в формате Delta (т.е. журнал транзакций отсутствует). Вы можете либо выбрать новый путь (который, судя по приведенным выше комментариям, похоже, вы это сделали), либо удалить этот каталог и повторить попытку.

person Michael Armbrust    schedule 16.07.2019
comment
Спасибо за эти уточнения @Michael :) - person Themis; 18.07.2019