Справочник по параметрам API Spark

На этой странице перечислены доступные параметры входных и выходных данных для API Spark, которые считывают и записывают данные.

Параметры DataFrameReader

Используйте эти параметры с DataFrameReader.option(), DataFrameReader.options(), read_files, COPY INTO и Auto Loader для управления тем, как Azure Databricks считывает файлы данных.

Example

В следующем примере задано multiLine значение True для чтения JSON-файлов:

Python
df = spark.read.format("json").option("multiLine", True).load("/path/to/data")
Scala
val df = spark.read.format("json").option("multiLine", "true").load("/path/to/data")
SQL
SELECT * FROM read_files("/path/to/data", format => "json", multiLine => true)

Общие

Следующие параметры применяются ко всем форматам файлов.

Key По умолчанию Description
ignoreCorruptFiles false Определяет, следует ли игнорировать поврежденные файлы. Если задано значение true, задания Spark будут продолжать выполняться при обнаружении поврежденных файлов, а прочитанное содержимое будет возвращено. Для COPY INTOэтого можно наблюдать пропущенные поврежденные файлы, как numSkippedCorruptFiles в столбце operationMetrics журнала Delta Lake. Доступно в Databricks Runtime 11.3 LTS и более поздних версиях.
ignoreMissingFiles false для автозагрузчика trueCOPY INTO (устаревшая версия) Определяет, следует ли игнорировать отсутствующие файлы. Если задано значение true, задания Spark продолжают выполняться при обнаружении отсутствующих файлов, а содержимое по-прежнему возвращается. Доступно в Databricks Runtime 11.3 LTS и более поздних версиях.
modifiedAfter None Необязательная метка времени в качестве фильтра для приема только файлов с меткой времени изменения после указанной метки времени.
modifiedBefore None Необязательная метка времени в качестве фильтра для обработки только тех файлов, у которых метка времени изменения предшествует указанной метке времени.
pathGlobFilter или fileNamePattern None Потенциальный глобальный шаблон для выбора файлов. Эквивалентно PATTERNCOPY INTO (устаревшей версии). fileNamePattern можно использовать в read_files.
recursiveFileLookup false Если trueэтот параметр выполняет поиск по вложенным каталогам, даже если их имена не соответствуют схеме именования секций, например date=2019-07-01.

Avro

Key По умолчанию Description
avroSchema None Схема в формате Avro, которую пользователь может предоставить по желанию. При чтении Avro этот параметр может быть установлен на развивающуюся схему, совместимую, но отличающуюся от фактической схемы Avro. Схема десериализации согласуется с развивающейся схемой. Например, если задать развиваемую схему, содержащую один дополнительный столбец со значением по умолчанию, результат чтения также содержит новый столбец.
avroSchemaEvolutionMode none Как обрабатывать эволюцию схемы при использовании реестра схем. Допустимые значения: none (игнорируйте изменения схемы и продолжайте задание), restart (при обнаружении изменений схемы вызывается UnknownFieldException и требуется перезапуск задания).
datetimeRebaseMode LEGACY Управляет изменением базы значений DATE и TIMESTAMP между юлианским и пролептическим григорианским календарями. Допустимые значения: EXCEPTION, LEGACY и CORRECTED.
enableStableIdentifiersForUnionType false Следует ли использовать стабильные имена полей для типов Avro Union. При включении имена полей типа объединения являются производными от имен типов в нижнем регистре (например, member_int). member_string Вызывает исключение, если два типа идентичны после нижней части.
mergeSchema false Следует ли определять схему на основе нескольких файлов и объединять схемы каждого файла. mergeSchema для Avro не ослабляет ограничения типов данных.
mode FAILFAST Режим синтаксического анализа для обработки поврежденных записей. Допустимые значения: FAILFAST (вызывает исключение), PERMISSIVE (задает неправильно сформированные поля значение NULL), DROPMALFORMED (автоматически удаляет плохие записи).
readerCaseSensitive true Указывает поведение чувствительности к регистру при включении rescuedDataColumn. Если значение true, спасите столбцы данных, имена которых отличаются по регистру от схемы. Если значение false, считывает данные без учета регистра.
recursiveFieldMaxDepth None Максимальная глубина рекурсии для рекурсивных полей Avro. Установите для 1 усечения всех рекурсивных полей, 2 чтобы разрешить один уровень рекурсии и т. д 15. Если не задано или 0не разрешено рекурсивные поля. Допустимые значения: 0 в 15.
rescuedDataColumn None Следует ли собирать все данные, которые не могут быть проанализированы из-за несоответствия типов данных и несоответствия схемы (включая регистр столбцов) отдельному столбцу. Этот столбец включен по умолчанию при использовании Автозагрузчика.
COPY INTO (устаревшая версия) не поддерживает спасательный столбец данных, так как невозможно вручную задать схему с помощью COPY INTO. Databricks рекомендует использовать Auto Loader для большинства сценариев загрузки.
Дополнительные сведения см. в статье "Что такое столбец спасенных данных?".
stableIdentifierPrefixForUnionType member_ Префикс, используемый для стабильных имен полей типа объединения, когда enableStableIdentifiersForUnionType=true.

CSV

Key По умолчанию Description
badRecordsPath None Путь для хранения файлов, содержащих сведения об ошибочных записях CSV.
charToEscapeQuoteEscaping \0 Символ, используемый для экранирования того символа, который используется для экранирования кавычек. Например, для следующей записи: [ " a\\", b ]:
  • Если символ для экранирования '\' не определен, запись не будет проанализирована. Средство синтаксического анализа будет считывать символы: [a],[\],["],[,],[ ],[b] и вызывать ошибку, так как не сможет найти закрывающую кавычку.
  • Если символ для экранирования '\' задан как '\', запись будет считываться с двумя значениями: [a\] и [b].
columnNameOfCorruptRecord _corrupt_record Поддержка для автозагрузчика. Не поддерживается для COPY INTO (устаревшая версия).
Столбец для хранения записей, которые имеют неправильный формат и не могут быть проанализированы. Если в качестве mode для синтаксического анализа задано значение DROPMALFORMED, этот столбец будет пустым.
comment \0 Определяет символ, который обозначает строку комментария, если он найден в начале строки текста. Используйте '\0', чтобы отключить пропуск комментариев.
dateFormat yyyy-MM-dd Формат синтаксического анализа строк даты.
emptyValue Пустая строка Строковое представление пустого значения.
enableDateTimeParsingFallback false Следует ли вернуться к устаревшей дате и поведению синтаксического анализа меток времени, если значение не может быть проанализировано с указанным форматом. При falseсинтаксическом анализе возникает ошибка или в зависимости от modeзначения NULL.
encoding или charset UTF-8 Имя кодировки CSV-файлов. Смотрите java.nio.charset.Charset для списка вариантов. UTF-16 и UTF-32 использовать нельзя, если multiline имеет значение true.
enforceSchema true Следует ли принудительно применять указанную или выведенную схему к CSV-файлам. Если параметр включен, заголовки CSV-файлов игнорируются. Этот параметр игнорируется по умолчанию при использовании Автозагрузчика для восстановления данных и разрешения на развитие схемы.
escape \ Escape-символ, используемый при анализе данных.
extension csv Ожидаемое расширение имени файла. Файлы без этого расширения отфильтровываются во время чтения.
failOnUnknownFields false Происходит ли сбой, если запись CSV содержит столбцы, не присутствующих в схеме. Если falseнераспознанные столбцы автоматически удаляются или спасаются в зависимости от rescuedDataColumnних.
failOnWidenedFields false Не удается ли выполнить анализ значения поля как объявленного типа схемы без расширения. Если falseзначения с расширением типа автоматически спасаются в зависимости от rescuedDataColumn. Параметр failOnUnknownFields=true может маскировки эффектов этого параметра.
header false Содержат ли CSV-файлы заголовок. При выводе схемы Автозагрузчик предполагает, что файлы имеют заголовки.
ignoreLeadingWhiteSpace false Следует ли игнорировать начальные пробелы для каждого анализируемого значения.
ignoreTrailingWhiteSpace false Следует ли игнорировать завершающие пробелы для каждого анализируемого значения.
inferSchema false Указывает, следует ли вычислять типы данных проанализированных записей CSV, или предполагается, что все столбцы имеют тип StringType. Требует дополнительного прохода по данным, если задано значение true. Для автозагрузчика используйте cloudFiles.inferColumnTypes вместо этого.
inputBufferSize 1048576 (1 МБ) Размер буфера в байтах для средства синтаксического анализа CSV. Полезно для настройки использования памяти при анализе больших CSV-файлов. Допустимые значения: положительные целые числа.
lineSep Нет, который охватывает \r, \r\nи \n Строка между двумя последовательными записями CSV.
locale US Идентификатор java.util.Locale. Влияет на разбор даты, метки времени и десятичного разделителя по умолчанию внутри CSV-файла.
maxCharsPerColumn -1 Максимальное число символов, ожидаемое в значении для синтаксического анализа. Можно использовать, чтобы избежать ошибок памяти. По умолчанию имеет значение -1, что означает отсутствие ограничений. Допустимые значения: положительные целые числа или -1 неограниченные.
maxColumns 20480 Фиксированное ограничение количества столбцов в записи. Допустимые значения: положительные целые числа.
mergeSchema false Следует ли определять схему на основе нескольких файлов и объединять схемы каждого файла. По умолчанию включено для автозагрузчика при выведении схемы.
mode PERMISSIVE Режим парсера для обработки некорректных записей. Допустимые значения: PERMISSIVE, , DROPMALFORMEDFAILFAST.
multiLine false Являются ли записи CSV многострочными.
nanValue NaN Строковое представление значения, не являющегося числовым, при синтаксическом анализе столбцов FloatType и DoubleType.
negativeInf -Inf Строковое представление отрицательной бесконечности при синтаксическом анализе столбцов FloatType или DoubleType.
nullValue Пустая строка Строковое представление значения NULL.
parserCaseSensitive (не рекомендуется) false Следует ли при чтении файлов выравнивать столбцы, указанные в заголовке, с учетом регистра в соответствии со схемой? Это значение равно true по умолчанию для Автозагрузчика. Столбцы, отличающиеся только регистром текста, будут сохранены в rescuedDataColumn, если эта функция включена. Вместо этого параметра рекомендуется использовать readerCaseSensitive.
positiveInf Inf Строковое представление положительной бесконечности при синтаксическом анализе столбцов FloatType или DoubleType.
preferDate true Пытается интерпретировать строки как дату, а не как отметку времени, когда это возможно. Кроме того, необходимо использовать вывод схемы, включив inferSchema или используя cloudFiles.inferColumnTypes функцию автозагрузчика.
quote " Символ, используемый для изоляции значений, в которых разделитель полей является частью значения.
readerCaseSensitive true Указывает поведение чувствительности к регистру при включении rescuedDataColumn. Если значение true, спасите столбцы данных, имена которых отличаются по регистру от схемы. Если значение false, считывает данные без учета регистра.
rescuedDataColumn None Следует ли собирать все данные, которые не могут быть проанализированы из-за несоответствия типов данных и несоответствия схемы (включая регистр столбцов) отдельному столбцу. Этот столбец включен по умолчанию при использовании Автозагрузчика. Дополнительные сведения см. в статье "Что такое столбец спасенных данных?".
COPY INTO (устаревшая версия) не поддерживает спасательный столбец данных, так как невозможно вручную задать схему с помощью COPY INTO. Databricks рекомендует использовать Auto Loader для большинства сценариев загрузки.
sep или delimiter , Разделительная строка между столбцами.
singleVariantColumn None Если задано имя столбца, считывает всю запись CSV в один VariantType столбец с таким именем, а не анализирует каждое поле в собственный столбец. Требует использования header=true.
skipRows 0 Количество строк с начала CSV-файла, которые следует игнорировать (включая комментарии и пустые строки). Если значение header равно true, заголовок будет первой строкой, которая не пропущена или не закомментирована. Допустимые значения: положительные целые числа или 0.
timeFormat HH:mm:ss Формат для синтаксического анализа значений столбцов TimeType .
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] Формат для синтаксического анализа строк меток времени.
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Формат синтаксического анализа метки времени без строк часового пояса (TimestampNTZType).
timeZone None Объект java.time.ZoneId, который следует использовать для анализа меток времени и дат.
unescapedQuoteHandling STOP_AT_DELIMITER Стратегия обработки неэкранированных кавычек. Разрешенные варианты:
  • STOP_AT_CLOSING_QUOTE: если во входных данных найдены неэкранированные кавычки, накопите символ кавычки и продолжайте анализировать значение как значение в кавычках, пока не будет найдена закрывающая кавычка.
  • BACK_TO_DELIMITER: если во входных данных обнаружены неэкранированные кавычки, значение следует рассматривать как значение без кавычек. Это позволит средству синтаксического анализа накапливать все символы текущего анализируемого значения до тех пор, пока не будет найден разделитель, определенный в sep. Если в значении разделитель обнаружен не будет, то средство синтаксического анализа продолжит накапливать символы из входных данных до тех пор, пока не будет найден разделитель или конец строки.
  • STOP_AT_DELIMITER: если во входных данных обнаружены неэкранированные кавычки, значение следует рассматривать как значение без кавычек. Это позволит средству синтаксического анализа накапливать все символы до тех пор, пока во входных данных не будет найден разделитель, определенный в sep, или символ конца строки.
  • SKIP_VALUE: если во входных данных обнаружены неэкранированные кавычки, содержимое, анализируемое для данного значения, будет пропущено (пока не будет найден следующий разделитель), и будет выдано значение из nullValue.
  • RAISE_ERROR: если неискаченные кавычки найдены во входных данных, TextParsingException создается исключение.

Excel

Key По умолчанию Description
dataAddress None Диапазон ячеек для чтения в синтаксисе Excel. Если опущено, считывает все допустимые ячейки из первого листа. Используется "SheetName!C5:H10" для чтения диапазона от именованного листа, "C5:H10" чтения диапазона от первого листа или "SheetName" чтения всех данных из определенного листа.
headerRows 0 Число начальных строк, используемых в качестве заголовков имени столбца. При dataAddress указании это применяется в диапазоне ячеек. Если 0имена столбцов создаются автоматически как _c1_c2, _c3и т. д. Допустимые значения: 0, . 1
ignoreMissingSheet false Следует ли автоматически пропускать файлы, не содержащие лист, указанный в параметре dataAddress. Если falseфайл отсутствует запрошенный лист, возникает ошибка. Применяется только при указании dataAddressимени листа. Допустимые значения: true, false.
includePhoneticRuns false Следует ли включать фонетические заметки (например, pinyin или furigana), сцепленные со значениями строк ячейки при чтении файлов XLSX. Допустимые значения: true, false.
operation readSheet Операция, выполняемая в книге Excel. Допустимые значения: readSheet (считывает данные из листа) listSheets (возвращает структуру с полями sheetIndex: long и sheetName: String для каждого листа).
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Строка настраиваемого формата для значений метки времени без часового пояса, хранящихся в виде строк в Excel. Пользовательские форматы даты следуют форматам из шаблонов даты и времени.
dateFormat yyyy-MM-dd Строка настраиваемого формата для строковых значений, прочитанных как Date. Пользовательские форматы даты следуют форматам из шаблонов даты и времени.

JSON

Key По умолчанию Description
allowBackslashEscapingAnyCharacter false Разрешить ли использовать обратные косые черты для экранирования любого последующего символа. Если параметр не активирован, экранировать можно только те символы, которые эксплицитно указаны в спецификации JSON.
allowComments false Разрешить ли использование комментариев в стиле Java, C и C++ (видов '/', '*' и '//') в проанализированном содержимом.
allowNonNumericNumbers true Разрешить ли использование набора токенов, представляющих нечисловые значения (NaN), как законные числовые значения с плавающей запятой.
allowNumericLeadingZeros false Разрешить ли целочисленное число начинаться с дополнительных (игнорируемых) нули (например, 000001).
allowSingleQuotes true Разрешить ли использование одинарных кавычек (апостроф, символ '\') для цитирования строк (имен и строковых значений).
allowUnquotedControlChars false Следует ли разрешить строкам JSON содержать управляющие символы без экранирования (символы ASCII со значением менее 32, включая символы табуляции и перевода строки) или нет.
allowUnquotedFieldNames false Следует ли разрешать использование неквотируемых имен полей, разрешенных JavaScript, но не спецификацией JSON.
alternateVariantEncoding None Кодировка, используемая для значений Variant в исходном формате JSON. Задайте для Z85 декодирования значений Variant, которые были закодированы в Кодировке Base85 вместо встроенного JSON.
badRecordsPath None Путь для хранения файлов для записи сведений о неправильных записях JSON.
badRecordsPath Использование параметра в источнике данных на основе файлов имеет следующие ограничения:
  • Она не является транзакционной и может привести к несогласованным результатам.
  • Временные ошибки рассматриваются как сбои.
columnNameOfCorruptRecord _corrupt_record Столбец для хранения записей, которые имеют неправильный формат и не могут быть проанализированы. Если в качестве mode для синтаксического анализа задано значение DROPMALFORMED, этот столбец будет пустым.
dateFormat yyyy-MM-dd Формат синтаксического анализа строк даты.
dropFieldIfAllNull false Игнорировать ли столбцы, в которых все значения равны NULL, пустые массивы и структуры во время вывода схемы.
encoding или charset UTF-8 Имя кодировки файлов JSON. Список вариантов см. в java.nio.charset.Charset. Нельзя использовать UTF-16 и UTF-32, если multiline имеет значение true.
inferTimestamp false Следует ли попытаться распознать строки меток времени как TimestampType. Если задано значение true, вывод схемы может занять заметно больше времени. Необходимо включить cloudFiles.inferColumnTypes, чтобы использовать автозагрузчик.
lineSep Нет, который охватывает \r, \r\nи \n Строка между двумя последовательными записями JSON.
locale US Идентификатор java.util.Locale. Влияет на разбор даты, времени и десятичных чисел по умолчанию в JSON.
maxNestingDepth 500 Максимальная разрешенная глубина вложения для объектов и массивов JSON. Увеличьте это значение для глубоко вложенных документов. Допустимые значения: положительные целые числа.
maxNumLen 1000 Максимальная длина маркеров числа в входных данных JSON. Увеличьте это значение для JSON с большими числовыми литералами. Допустимые значения: положительные целые числа.
maxStringLen неограниченно Максимальная длина строковых значений во входных данных JSON. Установите для ограничения использования памяти при анализе JSON с большими строками. Допустимые значения: положительные целые числа.
mode PERMISSIVE Режим парсера для обработки некорректных записей. Допустимые значения: PERMISSIVE, , DROPMALFORMEDFAILFAST.
multiLine false Занимает ли запись JSON несколько строк.
prefersDecimal false Пытается интерпретировать строки как DecimalType вместо типа float или double, когда это возможно. Кроме того, необходимо использовать вывод схемы, включив inferSchema или используя cloudFiles.inferColumnTypes функцию автозагрузчика.
primitivesAsString false Следует ли интерпретировать примитивные типы, такие как числа и логические значения, как StringType.
readerCaseSensitive true Указывает поведение чувствительности к регистру при включении rescuedDataColumn. Если значение true, спасите столбцы данных, имена которых отличаются по регистру от схемы. Если значение false, считывает данные без учета регистра. Доступно в Databricks Runtime 13.3 и более поздних версиях.
rescuedDataColumn None Следует ли собирать все данные, которые нельзя проанализировать из-за несоответствия типа данных или несоответствия схемы (включая регистр столбцов) отдельному столбцу. Этот столбец включен по умолчанию при использовании Автозагрузчика. Дополнительные сведения см. в разделе "Что такое столбец спасенных данных?".
COPY INTO (устаревшая версия) не поддерживает спасательный столбец данных, так как невозможно вручную задать схему с помощью COPY INTO. Databricks рекомендует использовать Auto Loader для большинства сценариев загрузки.
singleVariantColumn None Следует ли принять весь документ JSON, проанализированный в один столбец Variant с указанной строкой в качестве имени столбца. Если не задано, поля JSON обрабатываются в собственные столбцы. Допустимые значения: любая строка.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] Формат для синтаксического анализа строк меток времени.
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Формат синтаксического анализа метки времени без строк часового пояса (TimestampNTZType).
timeZone None Объект java.time.ZoneId, который следует использовать для анализа меток времени и дат.
upgradeExceptionAsBadRecord false Следует ли обрабатывать исключения обновления типов (например, если значение не может быть расширено до объявленного типа столбца) как плохие записи, а не исключение.

Кафка

Полный список параметров чтения Kafka см. в параметрах DataStreamReader Kafka. Следующие параметры применяются только к пакетным считываниям с помощью spark.read.format("kafka").

Key По умолчанию Description
endingOffsets latest Где остановить чтение. Допустимые значения: latestили строка JSON смещения для каждой секции, например {"topicA":{"0":50,"1":-1}}.
В строке -1 JSON используется последнее смещение. -2, который является самым ранним смещением, не допускается в качестве конечного смещения.
endingOffsetsByTimestamp None Конечные смещения на секцию, указанные как метки времени в миллисекундах. Допустимые значения: строка JSON меток времени для каждой секции, например {"topicA":{"0":2000,"1":3000}}.
endingTimestamp None Глобальная метка времени окончания в миллисекундах, примененная ко всем секциям. Допустимые значения: неотрицательных целых чисел.

ОРК

Key По умолчанию Description
mergeSchema false Следует ли определять схему на основе нескольких файлов и объединять схемы каждого файла.

Паркетным

Key По умолчанию Description
datetimeRebaseMode LEGACY Управляет изменением базы значений DATE и TIMESTAMP между юлианским и пролептическим григорианским календарями. Допустимые значения: EXCEPTION, LEGACY и CORRECTED.
int96RebaseMode LEGACY Управляет пересчетом значений временной метки INT96 между юлианским и пролептическим григорианским календарями. Допустимые значения: EXCEPTION, LEGACY и CORRECTED.
mergeSchema false Следует ли определять схему на основе нескольких файлов и объединять схемы каждого файла.
readerCaseSensitive true Указывает поведение чувствительности к регистру при включении rescuedDataColumn. Если значение true, спасите столбцы данных, имена которых отличаются по регистру от схемы. Если значение false, считывает данные без учета регистра.
rescuedDataColumn None Следует ли собирать все данные, которые не могут быть проанализированы из-за несоответствия типов данных и несоответствия схемы (включая регистр столбцов) отдельному столбцу. Этот столбец включен по умолчанию при использовании Автозагрузчика. Дополнительные сведения см. в статье "Что такое столбец спасенных данных?".
COPY INTO (устаревшая версия) не поддерживает спасательный столбец данных, так как невозможно вручную задать схему с помощью COPY INTO. Databricks рекомендует использовать Auto Loader для большинства сценариев загрузки.

Хранилище состояний

Используйте эти параметры с функцией с read_statestore табличным значением для spark.read.format("statestore") чтения данных о состоянии структурированной потоковой передачи. См. Сведения о состоянии структурированной потоковой передачи.

Key По умолчанию Description
batchId Последний идентификатор пакетной службы Целевой пакет для чтения. Используется для запроса предыдущего состояния запроса. Пакет должен быть зафиксирован, но еще не очищен. Допустимые значения: неотрицательных целых чисел.
operatorId 0 Целевой оператор для чтения. Используется, если запрос содержит несколько операторов с отслеживанием состояния. Допустимые значения: неотрицательных целых чисел.
storeName DEFAULT Имя целевого хранилища состояний для чтения. Используется, когда оператор с отслеживанием состояния содержит несколько экземпляров хранилища состояний. Необходимо указать либо storeName или joinSide для соединения потокового потока, но не для обоих. Допустимые значения: любая строка.
joinSide None Целевая сторона, считываемая из соединения потокового потока. Необходимо указать либо storeName или joinSide для соединения потокового потока, но не для обоих. Допустимые значения: left, right.
snapshotStartBatchId None Идентификатор пакета моментального снимка, используемый в качестве отправной точки при чтении состояния. Средство чтения перестраивает состояние путем повторения изменений из этого моментального снимка до тех пор batchId. Полезно при повреждении моментального снимка. Необходимо указать вместе с snapshotPartitionId. Не удается использовать с readChangeFeed. Поддерживает хранилище состояний, поддерживаемое HDFS, и хранилище состояний RocksDB с включенной контрольной точкой журнала изменений. Доступно в Databricks Runtime 15.4 LTS и более поздних версиях. Допустимые значения: неотрицательных целых чисел.
snapshotPartitionId None Если задано, запрос считывает только эту секцию. Необходимо указать вместе с snapshotStartBatchId. Не удается использовать с readChangeFeed. Доступно в Databricks Runtime 15.4 LTS и более поздних версиях. Допустимые значения: неотрицательных целых чисел.
readChangeFeed false Когда trueвозвращает изменения состояния в заданном диапазоне пакетов между changeStartBatchId и changeEndBatchId. Требует использования changeStartBatchId. Не удается использовать с joinSide, или snapshotPartitionIdbatchIdsnapshotStartBatchId. Доступно в Databricks Runtime 16.4 LTS и более поздних версиях. Допустимые значения: true, false.
Дополнительные сведения см. в статье Об изменениях состояния структурированной потоковой передачи.
changeStartBatchId None Начальный идентификатор пакета для диапазона канала изменений. Обязательный, если readChangeFeed имеет значение true. Применяется только в том случае, если readChangeFeed задано значение true. Доступно в Databricks Runtime 16.4 LTS и более поздних версиях. Допустимые значения: неотрицательных целых чисел.
changeEndBatchId Последний идентификатор пакетной службы Конечный идентификатор пакетной службы для диапазона канала изменений. Должно быть больше или равно changeStartBatchId. Применяется только в том случае, если readChangeFeed задано значение true. Доступно в Databricks Runtime 16.4 LTS и более поздних версиях. Допустимые значения: неотрицательных целых чисел.
stateVarName None Имя переменной состояния для чтения. Имя переменной состояния — это уникальное имя каждой переменной в init функции оператора, используемой transformWithStateStatefulProcessor оператором. Требуется при использовании transformWithState оператора. Доступно в Databricks Runtime 16.4 LTS и более поздних версиях. Допустимые значения: любая строка.
readRegisteredTimers false При trueчтении зарегистрированных таймеров, используемых оператором transformWithState . Применяется только к оператору transformWithState . Доступно в Databricks Runtime 16.4 LTS и более поздних версиях. Допустимые значения: true, false.
flattenCollectionTypes true Когда trueвозвращает записи, возвращаемые для переменных состояния карты и списка. Когда falseвозвращает записи в виде SQL Array Spark или Map. Применяется только к оператору transformWithState . Доступно в Databricks Runtime 16.4 LTS и более поздних версиях. Допустимые значения: true, false.

Текст

Key По умолчанию Description
encoding UTF-8 Имя кодировки разделителя строк текстовых файлов. Список параметров см. в разделе java.nio.charset.Charset. Содержимое файла не затрагивается этим параметром и считывается as-is.
lineSep Нет, который охватывает \r, \r\n и \n Строка между двумя последовательными текстовыми записями.
wholeText false Следует ли считывать файл как одну запись.

XML

Key По умолчанию Description
rowTag None Тег строки в XML-файлах, который необходимо рассматривать как строку. В примере XML <books> <book><book>...<books>соответствующее значение имеет значение book. Это обязательный параметр.
samplingRatio 1.0 Определяет долю строк, используемых для вывода схемы. Встроенные функции XML игнорируют этот параметр. Допустимые значения: 0.0 в 1.0.
excludeAttribute false Следует ли исключать атрибуты в элементах.
mode None Режим работы с поврежденными записями во время синтаксического анализа. PERMISSIVE: для поврежденных записей помещает недоформированную строку в поле, настроенное columnNameOfCorruptRecordи задает неправильно сформированные поля null. Чтобы сохранить поврежденные записи, можно задать string поле типа с именем columnNameOfCorruptRecord в определяемой пользователем схеме. Если в схеме нет поля, во время синтаксического анализа удаляются поврежденные записи. При определении схемы средство синтаксического анализа неявно добавляет поле columnNameOfCorruptRecord в схему результата. DROPMALFORMED: игнорирует поврежденные записи. Этот режим не поддерживается для встроенных функций XML. FAILFAST: Вызывает исключение, когда парсер встречает поврежденные записи.
inferSchema true Если true, пытается определить соответствующий тип для каждого результирующего столбца DataFrame. Если false, все результирующие столбцы имеют тип string. Встроенные функции XML игнорируют этот параметр.
columnNameOfCorruptRecord spark.sql.columnNameOfCorruptRecord Позволяет переименовать новое поле, содержащее неправильно сформированную строку, созданную в режиме PERMISSIVE .
attributePrefix None Префикс атрибутов для отличия атрибутов от элементов. Это будет префикс для имен полей. По умолчанию — _. Может быть пустым для чтения XML, но не для записи. Также относится к параметрам XML DataFrameWriter.
valueTag _VALUE Тег, используемый для символьных данных в элементах, которые также имеют атрибуты или дочерние элементы. Пользователь может указать поле valueTag в схеме, или оно будет добавлено автоматически во время определения схемы, если символьные данные присутствуют в элементах вместе с другими элементами или атрибутами. Также относится к параметрам XML DataFrameWriter.
encoding UTF-8 Для чтения декодирует XML-файлы по заданному типу кодирования. Для записи задает кодировку (charset) сохраненных XML-файлов. Встроенные функции XML игнорируют этот параметр. Также относится к параметрам XML DataFrameWriter.
ignoreSurroundingSpaces true Следует ли пропускать пробелы, окружающие значения. Данные, содержащие только символьные пробелы, игнорируются.
rowValidationXSDPath None Путь к необязательному XSD-файлу, который используется для проверки XML для каждой строки по отдельности. Строки, которые не удается проверить, обрабатываются как ошибки синтаксического анализа. XSD не влияет на схему, указанную или выводимую.
ignoreNamespace false Если true, префиксы пространств имен для XML-элементов и атрибутов игнорируются. Теги <abc:author> и <def:author>, например, рассматриваются как если бы оба были просто <author>. Пространства имен нельзя игнорировать в элементе rowTag, можно игнорировать только читаемые дочерние элементы. Синтаксический анализ XML не учитывает пространство имен, даже если false.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] Настраиваемая строка формата временной метки, которая соответствует формату шаблона даты и времени. Это относится к типу timestamp . Также относится к параметрам XML DataFrameWriter.
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Строка настраиваемого формата для метки времени без часового пояса, которая соответствует формату шаблона datetime. Это относится к типу TimestampNTZType. Также относится к параметрам XML DataFrameWriter.
dateFormat yyyy-MM-dd Строка настраиваемого формата даты, которая соответствует шаблону формата datetime. Это относится к типу даты. Также относится к параметрам XML DataFrameWriter.
locale en-US Устанавливает локаль в виде тега языка в формате IETF BCP 47. Например, locale используется при анализе дат и меток времени.
nullValue строка null Задает строковое представление значения NULL. Когда это null, средство синтаксического анализа не записывает атрибуты и элементы для полей. Также относится к параметрам XML DataFrameWriter.
readerCaseSensitive true Указывает поведение чувствительности к регистру, когда включен параметр rescuedDataColumn. Если значение true, спасите столбцы данных, имена которых отличаются по регистру от схемы. Если значение false, считывает данные без учета регистра.
rescuedDataColumn None Следует ли собирать все данные, которые нельзя проанализировать из-за несоответствия типов данных и несоответствия схемы (включая регистр столбцов) отдельному столбцу. Этот столбец включен по умолчанию при использовании Автозагрузчика. Для получения дополнительных сведений см. раздел "Что такое спасённый столбец данных?". COPY INTO (устаревшая версия) не поддерживает спасательный столбец данных, так как невозможно вручную задать схему с помощью COPY INTO. Databricks рекомендует использовать Auto Loader для большинства сценариев загрузки.
singleVariantColumn none Указывает имя одного варианта столбца. Если этот параметр указан для чтения, синтаксический анализ всей XML-записи в один столбец Variant с заданным строковым значением параметра в качестве имени столбца. Если этот параметр предоставляется для записи, напишите значение одного столбца Variant в XML-файлы. Также относится к параметрам XML DataFrameWriter.
useLegacyXMLParser true Следует ли использовать устаревший средство синтаксического анализа XML. Устаревший средство синтаксического анализа имеет менее строгие проверки для неправильно сформированного содержимого, но менее эффективной в памяти. Установите для false включения более строгого средства синтаксического анализа по умолчанию.
wildcardColName xs_any Имя столбца, используемое для записи XML-элементов, соответствующих элементу схемы подстановочного знака (xs:any). Нельзя использовать вместе с rescuedDataColumn.

Параметры DataStreamReader

Используйте эти параметры для DataStreamReader.option() настройки потоковых операций чтения из таблиц Delta Lake и других источников на основе файлов.

Параметры формата файлов (JSON, CSV, Parquet и другие) см. в параметрах DataFrameReader.

Параметры автозагрузчика (cloudFiles.*) см. в разделе "Автозагрузчик".

Пример

Следующий пример задает значение maxFilesPerTrigger10 для потока таблицы Delta Lake:

Python
df = spark.readStream.format("delta").option("maxFilesPerTrigger", 10).load("/path/to/delta-table")
Scala
val df = spark.readStream.format("delta").option("maxFilesPerTrigger", "10").load("/path/to/delta-table")

Общие

Следующие параметры применяются к таблицам Delta Lake и другим источникам потоковой передачи на основе файлов.

Key По умолчанию Description
cleanSource off Как обрабатывать исходные файлы после их обработки потоком. Допустимые значения: off (без действия), delete (окончательное удаление исходного файла) archive (перемещение в sourceArchiveDir). Если задано значение archive, sourceArchiveDir также необходимо задать. Не применяется к потоковой передаче таблиц Delta Lake.
fileNameOnly false Следует ли определять уже обработанные файлы по имени файла, а не по полному пути. Если trueфайлы с разными путями с одинаковым именем файла обрабатываются как один и тот же файл и не обрабатываются повторно. Не применяется к потоковой передаче таблиц Delta Lake.
latestFirst false Следует ли обрабатывать последние измененные файлы в каждом микропакете. Полезно при обработке последних данных как можно быстрее. Если true и maxFilesPerTriggermaxBytesPerTrigger задано, maxFileAge игнорируется. Не применяется к потоковой передаче таблиц Delta Lake.
maxBytesPerTrigger None Обратимое максимальное значение для объема данных, обрабатываемых для каждого микропакета. Пакет может обрабатывать больше предела, если наименьший входной блок превышает его. При использовании вместе с maxFilesPerTriggerданными микропакета обрабатываются до тех пор, пока не будет достигнуто любое ограничение. Допустимые значения: положительные целые числа.
Для автозагрузчика используйте cloudFiles.maxBytesPerTrigger вместо этого. См. общие статьи.
maxCachedFiles 10000 Максимальное количество необработанных файлов для кэширования для последующих микропакетов. Установите для 0 отключения кэширования. Увеличьте это значение, если исходный каталог содержит множество новых файлов для каждого триггера. Не применяется к потоковой передаче таблиц Delta Lake. Допустимые значения: положительные целые числа или 0.
maxFileAge 7d Максимальный возраст файлов, которые считаются для обработки, относительно метки времени последнего измененного файла, а не текущего системного времени. Файлы старше этого порога игнорируются. Принимает строки длительности, 7d например или 4h. Игнорируется, когда latestFirst задано true или maxFilesPerTriggermaxBytesPerTrigger задано. Не применяется к потоковой передаче таблиц Delta Lake.
maxFilesPerTrigger 1000 для Delta Lake и автозагрузчика. Нет максимального значения для других источников на основе файлов. Верхняя граница для количества новых файлов, обработанных в каждом микропакете. При использовании вместе с maxBytesPerTriggerданными микропакета обрабатываются до тех пор, пока не будет достигнуто любое ограничение. Допустимые значения: положительные целые числа.
Для автозагрузчика используйте cloudFiles.maxFilesPerTrigger вместо этого. См. общие статьи.
sourceArchiveDir None Путь к каталогу архива, если cleanSource задано значение archive. Исходные файлы перемещаются в этот путь после обработки, сохраняя относительную структуру каталога. Не применяется к потоковой передаче таблиц Delta Lake.

Автозагрузчик

Используйте эти параметры с cloudFiles источником, чтобы настроить автозагрузчик для приема потоковой передачи из облачного хранилища. Параметры, относящиеся к cloudFiles источнику, имеют префикс, cloudFiles чтобы сохранить их в отдельном пространстве имен от других параметров источника структурированной потоковой передачи .

Общие

Key По умолчанию Description
cloudFiles.allowOverwrites false Разрешено ли изменение файла входного каталога для перезаписи существующих данных.
Чтобы узнать о предостережениях при конфигурации, см. раздел Обрабатывает ли Автоматический загрузчик файл повторно при его добавлении или перезаписи?.
cloudFiles.backfillInterval None Автозагрузчик может запускать асинхронные операции по заполнению данных с заданным интервалом. Например, 1 day для ежедневной заполнения или 1 week для еженедельной заполнения. Дополнительные сведения см. в разделе "Активация обычных резервных копий с помощью cloudFiles.backfillInterval".
Не используйте, если cloudFiles.useManagedFileEvents задано значение true.
cloudFiles.cleanSource OFF Следует ли автоматически удалять обработанные файлы из входного каталога. Если задано значение OFF (по умолчанию), файлы не удаляются.
В режиме DELETE автозагрузчик автоматически удаляет файлы через 30 дней после обработки. Для этого автозагрузчик должен иметь разрешения на запись в исходный каталог.
При установке автозагрузчик MOVEавтоматически перемещает файлы в указанное расположение через cloudFiles.cleanSource.moveDestination 30 дней после обработки. Для этого автозагрузчик должен иметь разрешения на запись в исходный каталог, а также в расположение перемещения.
Файл считается обработанным, если он имеет значение, отличное от NULL, в результате commit_time табличного значения cloud_files_state функции. См. табличную функцию cloud_files_state. 30-дневное дополнительное ожидание после обработки можно настроить с помощью cloudFiles.cleanSource.retentionDuration.
Перед включением cloudFiles.cleanSourceознакомьтесь со следующими рекомендациями.
  • Azure Databricks не рекомендует использовать этот параметр, если существует несколько потоков, потребляющих данные из исходного расположения, так как самый быстрый потребитель будет удалять файлы, и они не будут приемляться в более медленных источниках.
  • Для включения этой функции требуется автозагрузчик для поддержания дополнительного состояния в контрольной точке, что приводит к затратам на производительность, но обеспечивает улучшенную наблюдаемость с помощью cloud_files_state табличной функции. См. табличную функцию cloud_files_state.
  • cleanSourceиспользует текущий параметр для определения того, MOVE следует ли или DELETE какой-либо файл. Например, предположим, что параметр был MOVE при первоначальной обработке файла, но был изменен на DELETE то, когда файл стал кандидатом на очистку 30 дней спустя. В этом случае cleanSource удаляет файл.
  • Файлы не гарантируют очистку сразу после retentionDuration истечения срока действия. Чтобы снизить затраты, автозагрузчик удаляет файлы одновременно с потоковой обработкой и завершается, как только обработка потока завершается или завершается. Файлы, которые были кандидатами на очистку, но не удалось очистить во время потоковой обработки, будут выбраны при следующем запуске автозагрузчика.

Доступно в Databricks Runtime 16.4 и более поздних версий.
cloudFiles.cleanSource.retentionDuration 30 days Время ожидания, прежде чем обработанные файлы становятся кандидатами для архивации.cleanSource Должно быть больше 7 дней для DELETE. Нет минимального ограничения для MOVE.
Значением является строка CalendarInterval . Например, "14 days", "30 days", "2 weeks" или "1 month".
Доступно в Databricks Runtime 16.4 и более поздних версий.
cloudFiles.cleanSource.moveDestination None Путь к архиву для обработанных файлов, если для cloudFiles.cleanSource установлено значение MOVE. Это может быть путь к облачному хранилищу или путь к тому каталога Unity (например, /Volumes/my_catalog/my_schema/my_volume/archive/).
Расположение перемещения должно:
  • Не является дочерним элементом исходного каталога. Если переместить место назначения в исходном каталоге, архивные файлы будут приема снова.
  • Находиться в том же внешнем расположении, томе или DBFS, что и источник. Перемещения между корзинами и между контейнерами не поддерживаются и приводят к ошибке.

Автозагрузчик должен иметь разрешения на запись в этот каталог.
Доступно в Databricks Runtime 16.4 и более поздних версий.
cloudFiles.format Нет (обязательный параметр) Формат файла данных в исходном пути. Допустимые значения:
cloudFiles.includeExistingFiles true Следует ли включать существующие файлы во входной путь обработки потоковой передачи или обрабатывать только новые файлы, поступающие после первоначальной настройки. Этот параметр оценивается только при первом запуске потока. Изменение этого параметра после перезапуска потока не даст результата.
cloudFiles.inferColumnTypes false Следует ли выводить точные типы столбцов при использовании вывода схемы. По умолчанию столбцы выводятся как строки при выводе наборов данных JSON и CSV. Дополнительные сведения см. в разделе Вывод схемы.
cloudFiles.maxBytesPerTrigger None Максимальное число новых байтов, которое может обрабатываться в каждом триггере. Можно указать строку байтов, например 10g, чтобы ограничить каждый микропакет до 10 ГБ данных. Это мягкое ограничение. Если у вас есть файлы размером 3 ГБ каждый, Azure Databricks обработает микропакет 12 ГБ. При совместном использовании с cloudFiles.maxFilesPerTrigger Azure Databricks потребляет до нижнего предела cloudFiles.maxFilesPerTrigger или cloudFiles.maxBytesPerTrigger, в зависимости от того, что будет достигнуто раньше. Этот параметр не действует при использовании с Trigger.Once() (Trigger.Once() не рекомендуется).
В Databricks Runtime 18.0 и более поздних версий этот параметр настраивается динамически и не требуется устанавливать вручную.
cloudFiles.maxFileAge None Длительность отслеживания события файла для обнаружения дубликатов. В Databricks не рекомендуется настраивать этот параметр, если вы не загружаете данные в размере миллионов файлов в час. Дополнительные сведения см. в разделе "Отслеживание событий файлов ".
Настройка cloudFiles.maxFileAge слишком агрессивно может вызвать проблемы с качеством данных, такие как дублирование загрузки или пропущенные файлы. Таким образом, Databricks рекомендует установить консервативное значение для cloudFiles.maxFileAge, например, 90 дней, что аналогично рекомендациям сопоставимых решений для приема данных.
cloudFiles.maxFilesPerTrigger 1000 Максимальное число новых файлов, которое должно быть обработано в каждом триггере. При совместном использовании с cloudFiles.maxBytesPerTrigger Azure Databricks потребляет до нижнего предела cloudFiles.maxFilesPerTrigger или cloudFiles.maxBytesPerTrigger, в зависимости от того, что будет достигнуто раньше. Этот параметр не действует при использовании с Trigger.Once() (не рекомендуется).
В Databricks Runtime 18.0 и более поздних версий этот параметр настраивается динамически и не требуется устанавливать вручную.
cloudFiles.partitionColumns None Разделенный запятыми список столбцов секций в стиле Hive, которые вы хотите вывести из структуры каталогов файлов. Столбцы секционирования в стиле Hive — это пары "ключ-значение", объединенные знаком равенства, например <base-path>/a=x/b=1/c=y/file.format. В этом примере столбцы секционирования представляют собой a, b и c. По умолчанию эти столбцы автоматически добавляются в схему при использовании определения схемы и предоставления <base-path> в качестве источника для загрузки данных. Если вы задаете схему, то Автозагрузчик ожидает включение в нее этих столбцов. Если вы не хотите, чтобы эти столбцы были включены в схему, можно указать "", чтобы игнорировать их. Кроме того, этот параметр можно использовать, если требуется, чтобы столбцы выводили путь к файлу в сложных структурах каталогов, как показано в примере ниже.
<base-path>/year=2022/week=1/file1.csv
<base-path>/year=2022/month=2/day=3/file2.csv
<base-path>/year=2022/month=2/day=4/file3.csv
Указание cloudFiles.partitionColumns в качестве year,month,day возвращает year=2022 значения для file1.csv, но столбцы month и daynull.
month и day правильно анализируются для file2.csv и file3.csv.
cloudFiles.schemaEvolutionMode addNewColumns Если схема не указана, none в противном случае Режим для развития схемы по мере обнаружения в данных новых столбцов. По умолчанию столбцы выводятся как строки при выводе наборов данных JSON. Дополнительные сведения см. в разделе Развитие схемы.
cloudFiles.schemaHints None Сведения о схеме, которые вы предоставляете Автозагрузчику при автоматическом определении схемы. Дополнительные сведения см. в разделе Указания для схемы.
cloudFiles.schemaLocation Нет (требуется для вывода схемы) Расположение для хранения выводимой схемы и последующих изменений. Дополнительные сведения см. в разделе Вывод схемы.
cloudFiles.useStrictGlobber false Следует ли использовать строгий режим глоббинга, соответствующий поведению глоббинга других источников файлов по умолчанию в Apache Spark. Дополнительные сведения см. в общих шаблонах загрузки данных . Доступно в Databricks Runtime 12.2 LTS и более поздних версиях.
cloudFiles.validateOptions true Следует ли проверять параметры Автозагрузчика и возвращать ошибку для неизвестных или несогласованных параметров.

Список каталогов

Key По умолчанию Description
cloudFiles.useIncrementalListing (не рекомендуется) auto в Databricks Runtime 17.2 и более поздних версиях в false Databricks Runtime 17.3 и более поздних версиях Эта функция является устаревшей. Databricks рекомендует использовать режим уведомлений файлов с событиями файлов вместо cloudFiles.useIncrementalListing.
Следует ли использовать добавочный список вместо полного списка в режиме отображения содержимого каталога. По умолчанию автозагрузчик делает все возможное, чтобы автоматически определить, применим ли данный каталог к добавочному перечислению. Вы можете явно использовать добавочный список или использовать полный список файлов каталогов, задав для этого параметра значение true или false соответственно.
Неправильное включение инкрементального перечисления в нелексически упорядоченном каталоге мешает автозагрузчику обнаруживать новые файлы.
Работает с Azure Data Lake Storage (), S3 (abfss://s3://) и GCS (gs://).
Доступно в Databricks Runtime 9.1 LTS и более поздних версиях.
Доступные значения: auto, true, false

Уведомление о файле

Сведения о настройке режима уведомлений файлов, включая необходимые облачные разрешения, инструкции по настройке и методы проверки подлинности, см. в разделе "Настройка потоков автозагрузчика" в режиме уведомлений о файлах.

Key По умолчанию Description
cloudFiles.fetchParallelism 1 Число потоков, используемых для извлечения сообщений из системы управления очередями.
Не используйте, если cloudFiles.useManagedFileEvents задано значение true.
cloudFiles.pathRewrites None Требуется только в том случае, если вы указываете queueUrl , что получает уведомления о файлах из нескольких контейнеров S3 и хотите использовать точки подключения, настроенные для доступа к данным в этих контейнерах. Используйте этот параметр, чтобы заменить префикс bucket/key пути на точку монтирования. Перезаписывать можно только префиксы. Например, для конфигурации {"<databricks-mounted-bucket>/path": "dbfs:/mnt/data-warehouse"}путь s3://<databricks-mounted-bucket>/path/2017/08/fileA.json перезаписан в dbfs:/mnt/data-warehouse/2017/08/fileA.json.
Не используйте, если cloudFiles.useManagedFileEvents задано значение true.
cloudFiles.resourceTag None Ряд пар тегов "ключ — значение", которые помогают связать и идентифицировать связанные ресурсы, например:
cloudFiles.option("cloudFiles.resourceTag.myFirstKey", "myFirstValue")
.option("cloudFiles.resourceTag.mySecondKey", "mySecondValue")
Дополнительные сведения об AWS см. в тегах распределения затрат Amazon SQS и настройке тегов для раздела Amazon SNS. (1)
Дополнительные сведения об Azure см. в разделе Именование очередей и метаданных и охват properties.labels в подписках на события. Автозагрузчик сохраняет эти пары тегов "ключ — значение" в формате JSON в виде меток. (1)
Дополнительные сведения о GCP см. в разделе "Отчеты об использовании с метками". (1)
Не используйте, если cloudFiles.useManagedFileEvents задано значение true. Вместо этого задайте теги ресурсов с помощью консоли поставщика облачных служб.
cloudFiles.useManagedFileEvents false При установке true автозагрузчик использует службу событий файлов для обнаружения файлов во внешнем расположении. Этот параметр можно использовать только в том случае, если путь загрузки данных находится во внешней директории, где включены события файлов. См. раздел "Использование режима уведомлений файлов" с событиями файлов.
События файлов обеспечивают производительность на уровне уведомлений при обнаружении файлов, так как автозагрузчик может обнаруживать новые файлы после последнего запуска. В отличие от списка каталогов, этот процесс не должен перечислять все файлы в каталоге.
Существуют некоторые ситуации, когда автозагрузчик использует список каталогов, даже если включен параметр событий файла:
  • Во время начальной загрузки, когда includeExistingFiles установлено в true, выполняется полный список каталогов для обнаружения всех файлов, которые присутствовали в каталоге до запуска Auto Loader.
  • Служба событий файлов оптимизирует обнаружение файлов путем кэширования последних созданных файлов. Если автозагрузчик выполняется редко, этот кэш может истекать, а автозагрузчик возвращается в список каталогов, чтобы обнаружить файлы и обновить кэш. Чтобы избежать этого сценария, вызов автозагрузчика по крайней мере раз в семь дней.

См. раздел "Когда автозагрузчик с событиями файлов использует список каталогов?", чтобы получить полный список ситуаций, когда автозагрузчик использует список каталогов с этим параметром.
Доступно в Databricks Runtime 14.3 LTS и более поздних версиях.
cloudFiles.listOnStart false Если задано значение true, автозагрузчик выполняет полный список каталогов при запуске потока, а не начиная с маркера продолжения в контрольной точке. Используйте этот параметр для восстановления после ошибок, таких как CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN. Узнайте, как восстановиться после CF_MANAGED_FILE_EVENTS_INVALID_CONTINUATION_TOKEN ошибки?
cloudFiles.useNotifications false Следует ли использовать режим уведомлений о файлах для определения наличия новых файлов. Если значение равно false, используется режим листинга каталогов. См. Сравнение режимов обнаружения файлов автозагрузчика.
Не используйте, если cloudFiles.useManagedFileEvents задано значение true.

(1) Автозагрузчик добавляет следующие пары тегов "ключ-значение" по умолчанию, по мере возможности:

  • vendor: Databricks
  • path: расположение, из которого загружаются данные. Недоступно в GCP из-за ограничений по маркировке.
  • checkpointLocation: расположение контрольной точки потока. Недоступно в GCP из-за ограничений по маркировке.
  • streamId: глобальный уникальный идентификатор для потока.

Databricks резервирует эти имена ключей, и вы не можете перезаписать их значения.

Облачные решения

Автозагрузчик предоставляет параметры настройки облачной инфраструктуры для режима уведомлений файлов. Необходимые облачные разрешения и инструкции по настройке см. в разделе "Настройка потоков автозагрузчика" в режиме уведомлений о файлах.

AWS

Укажите следующие параметры, только если вы выберете cloudFiles.useNotifications = true и хотите, чтобы автозагрузчик настраивал службы уведомлений для вас:

Key По умолчанию Description
cloudFiles.region Область экземпляра EC2 Регион, в котором находится исходный контейнер S3, и где вы хотите создать службы AWS SNS и SQS.
Key По умолчанию Description
cloudFiles.restrictNotificationSetupToSameAWSAccountId false Разрешить уведомления о событиях из контейнеров AWS S3 в той же учетной записи, что и раздел SNS. Если значение true, автозагрузчик принимает уведомления только о событиях из контейнеров AWS S3 в той же учетной записи, что и раздел SNS.
Если falseполитика доступа не ограничивает контейнеры между учетными записями и настройки разделов SNS. Это полезно, если раздел SNS и путь к контейнеру связаны с разными учетными записями.
Доступно в Databricks Runtime 17.2 и более поздних версиях.

Укажите следующий параметр, только если вы выбрали cloudFiles.useNotifications = true и хотите, чтобы Автозагрузчик использовал уже настроенную вами очередь.

Key По умолчанию Description
cloudFiles.queueUrl None URL-адрес очереди SQS. Если этот параметр указан, Автозагрузчик напрямую использует события из этой очереди вместо настройки собственных служб AWS SNS и SQS.

Параметры проверки подлинности AWS

Укажите следующий параметр проверки подлинности для использования учетных данных службы Databricks:

Key По умолчанию Description
databricks.serviceCredential None Имя учетных данных вашего сервиса Databricks . Доступно в Databricks Runtime 16.1 и более поздних версиях.

Если учетные данные службы Databricks или роли IAM недоступны, можно указать следующие параметры проверки подлинности.

Key По умолчанию Description
cloudFiles.awsAccessKey None Идентификатор ключа доступа AWS для пользователя. Должен быть предоставлен.cloudFiles.awsSecretKey
cloudFiles.awsSecretKey None Секретный ключ доступа AWS для пользователя. Должен быть предоставлен.cloudFiles.awsAccessKey
cloudFiles.roleArn None ARN IAM роли, которую следует принять при необходимости. Роль можно принять из профиля экземпляра вашего кластера или предоставить учетные данные с помощью cloudFiles.awsAccessKey и cloudFiles.awsSecretKey.
cloudFiles.roleExternalId None Идентификатор, который необходимо предоставить при принятии роли с помощью cloudFiles.roleArn.
cloudFiles.roleSessionName None Необязательное имя сеанса, используемое при условии роли.cloudFiles.roleArn
cloudFiles.stsEndpoint None Необязательная конечная точка, предназначенная для доступа к AWS STS при принятии роли с помощью cloudFiles.roleArn.
Azure

Необходимо указать значения для всех следующих параметров, если вы указали cloudFiles.useNotifications = true и хотите, чтобы Автозагрузчик настроил службы уведомлений:

Key По умолчанию Description
cloudFiles.resourceGroup None Группа ресурсов Azure, в которой создается учетная запись хранения.
cloudFiles.subscriptionId None Идентификатор подписки Azure, в которой создается группа ресурсов.
databricks.serviceCredential None Имя учетных данных вашего сервиса Databricks . Доступно в Databricks Runtime 16.1 и более поздних версиях.

Если учетные данные службы Databricks недоступны, можно указать следующие параметры проверки подлинности.

Key По умолчанию Description
cloudFiles.clientId None Идентификатор клиента или приложения сервисного принципала.
cloudFiles.clientSecret None Секрет клиента субъекта-службы.
cloudFiles.connectionString None Строка подключения для учетной записи хранения, которая может быть основана на ключе доступа к учетной записи или токене совместного доступа (SAS).
cloudFiles.tenantId None Идентификатор клиента Azure, в котором создается субъект-служба.

Укажите следующий параметр, только если задано cloudFiles.useNotifications = true , и вы хотите, чтобы автозагрузчик использовал существующую очередь:

Key По умолчанию Description
cloudFiles.queueName None Имя очереди Azure. Если этот параметр указан, источник облачных файлов напрямую использует события из этой очереди, а не настраивает собственные службы сетки событий и хранилища очередей Azure. В этом случае для databricks.serviceCredential или cloudFiles.connectionString требуются только права на чтение в очереди.
GCP

Автозагрузчик может автоматически настроить службы уведомлений для вас, используя учетные данные службы Databricks . Для учетной записи службы, созданной с учетными данными службы Databricks, требуются разрешения, указанные в разделе "Настройка потоков автозагрузчика" в режиме уведомлений о файлах.

Key По умолчанию Description
cloudFiles.projectId None Идентификатор проекта, в который входит контейнер GCS. Подписка Google Cloud Pub/Sub также создается в рамках этого проекта.
databricks.serviceCredential None Имя учетных данных вашего сервиса Databricks . Доступно в Databricks Runtime 16.1 и более поздних версиях.

Если учетные данные службы Databricks недоступны, вы можете напрямую использовать учетные записи службы Google. Вы можете настроить кластер для получения учетной записи службы, выполнив настройку службы Google , или укажите следующие параметры проверки подлинности напрямую:

Key По умолчанию Description
cloudFiles.client None Идентификатор клиента учетной записи службы Google.
cloudFiles.clientEmail None Адрес электронной почты учетной записи службы Google.
cloudFiles.privateKey None Закрытый ключ, созданный для учетной записи службы Google.
cloudFiles.privateKeyId None Идентификатор закрытого ключа, созданного для учетной записи службы Google.

Укажите следующий параметр, только если вы выбрали cloudFiles.useNotifications = true и хотите, чтобы Автозагрузчик использовал уже настроенную вами очередь.

Key По умолчанию Description
cloudFiles.subscription None Имя подписки Google Cloud Pub/Sub. Если этот параметр указан, источник облачных файлов использует события из этой очереди вместо настройки собственных служб уведомлений GCS и публикации/подписки Google Cloud.

Delta Lake

Следующие параметры применяются при чтении из таблицы Delta Lake с помощью spark.readStream.

Key По умолчанию Description
allowSourceColumnDrop None Задайте номер версии таблицы Delta или "always" позволить потоку продолжаться после удаления столбцов из схемы исходной таблицы. Если задано значение номера версии, все изменения схемы изменяются до этой версии. Требует использования schemaTrackingLocation. См. как переименовывать и удалять столбцы с использованием сопоставления столбцов в Delta Lake.
allowSourceColumnRename None Задайте номер версии таблицы Delta или "always" разрешить потоку продолжаться после переименования столбцов в исходной таблице. Если задано значение номера версии, все изменения схемы изменяются до этой версии. Требует использования schemaTrackingLocation. См. как переименовывать и удалять столбцы с использованием сопоставления столбцов в Delta Lake.
allowSourceColumnTypeChange None Задайте номер версии таблицы Delta или "always" разрешить потоку продолжаться после изменения типов столбцов в исходной таблице. Если задано значение номера версии, все изменения схемы изменяются до этой версии. Требует использования schemaTrackingLocation. См. Расширение типов.
excludeRegex None Шаблон регулярного выражения. Файлы, пути которых соответствуют шаблону, исключаются из потоковой передачи. Полезно для фильтрации файлов, которые не соответствуют ожидаемому соглашению об именовании.
failOnDataLoss true Если исходные данные были удалены из-за хранения журналов (logRetentionDuration). Установите для false пропуска отсутствующих данных и продолжения обработки. См. Настройка сохранения данных для запросов по временному перемещению.
ignoreChanges (не рекомендуется) false Доступно в Databricks Runtime 11.3 LTS и ниже. Повторно отправляет файлы данных после операций изменения, таких как UPDATE, MERGE INTOили DELETEOVERWRITE. Без изменений строки могут создаваться вместе с новыми строками, поэтому подчиненные потребители должны обрабатывать дубликаты. Удаления не распространяются вниз по потоку. Заменено skipChangeCommits в Databricks Runtime 12.2 LTS и выше.
ignoreDeletes (не рекомендуется) false Игнорирует транзакции, которые удаляют данные по границам секции (только полное удаление секций). Не обрабатывает удаления, обновления и другие изменения, не относящиеся к секционированиям. Вместо этого используйте skipChangeCommits.
readChangeFeed или readChangeData false Следует ли включить чтение веб-канала измененных данных для потокового запроса. При включении поток выдает изменения на уровне строк (вставки, обновления и удаления) с дополнительными столбцами метаданных. См. Использование канала изменений данных Delta Lake в Azure Databricks.
schemaTrackingLocation None Путь к каталогу, в котором Delta Lake отслеживает изменения схемы для потокового чтения. Требуется при потоковой передаче из таблиц с включенным сопоставлением столбцов и использованием allowSourceColumn* параметров для обработки эволюции схемы. Должен находиться в checkpointLocation потоковом запросе. См. как переименовывать и удалять столбцы с использованием сопоставления столбцов в Delta Lake.
skipChangeCommits false Игнорирует транзакции, которые удаляют или изменяют существующие записи и процессы только добавляются. Databricks рекомендует этот параметр для большинства рабочих нагрузок, которые не используют веб-каналы измененных данных. Доступно в Databricks Runtime 12.2 LTS и более поздних версиях. См. раздел "Пропустить фиксации изменений вышестоящего потока" с skipChangeCommitsпомощью .
startingTimestamp Последняя версия доступна Метка времени, из которой начинается чтение. Поток считывает все изменения таблицы, зафиксированные в указанной метке времени или после нее. Если метка времени предшествует всем доступным фиксациям таблицы, поток начинается с самой ранней доступной фиксации. Нельзя использовать вместе с startingVersion. Игнорируется, если контрольная точка потоковой передачи уже существует.
Допустимые значения: строка метки времени, "2019-01-01T00:00:00.000Z" например или строка даты, например "2019-01-01".
startingVersion Последняя версия доступна Разностная версия таблицы, из которой начинается чтение. Поток считывает все изменения, зафиксированные в указанной версии или после нее. Укажите "latest" , чтобы начать только последние изменения. Нельзя использовать вместе с startingTimestamp. Игнорируется, если контрольная точка потоковой передачи уже существует. См. статью "Работа с журналом таблиц".
withEventTimeOrder false Делит начальный моментальный снимок таблицы на контейнеры времени событий, чтобы предотвратить неправильно помеченные записи как поздние события и удалены в запросах с отслеживанием состояния с подложками. Невозможно изменить после начала начальной обработки моментальных снимков без удаления контрольной точки. Доступно в Databricks Runtime 11.3 LTS и более поздних версиях. См. также Обработка начального моментального снимка без потери данных.

Кафка

Используйте следующие параметры с помощью следующих spark.readStream.format("kafka") вариантов:spark.read.format("kafka")

Key По умолчанию Description
assign None Определенные секции для использования. Необходимо указать именно один из subscribesubscribePatternпараметров или assign параметров. Допустимые значения: строка JSON, например {"topicA":[0,1],"topicB":[2,4]}.
failOnDataLoss true Не удается выполнить запрос, если данные могли быть потеряны, например из-за удаленных разделов или усечения смещения. Установите для false пропуска отсутствующих данных и продолжения. Допустимые значения: true, false.
Databricks оценивает консервативно, могут ли данные быть потеряны. Однако это может привести к ложным тревогам.
fetchoffset.numretries 3 Количество повторных попыток при получении смещения Kafka завершается сбоем. Допустимые значения: неотрицательных целых чисел.
fetchoffset.retryintervalms 1000 Интервал в миллисекундах между повторными попытками получения смещения. Допустимые значения: неотрицательных целых чисел.
groupIdPrefix spark-kafka-source (потоковая передача), spark-kafka-relation (пакетная версия) Настраиваемый префикс для автоматического создания идентификатора группы потребителей Kafka. Если kafka.group.id этот параметр задан явным образом, соединитель игнорирует этот параметр. Допустимые значения: любая строка.
includeHeaders false Следует ли включать заголовки сообщений Kafka в качестве столбца в выходные данные. Допустимые значения: true, false.
kafkaconsumer.polltimeoutms None Время ожидания в миллисекундах для вызова потребителя poll() Kafka. Допустимые значения: положительные целые числа.
kafka.bootstrap.servers None Разделенный запятыми список адресов host:port для брокеров Kafka. Задает свойство клиента bootstrap.servers Kafka.
Если данные из Kafka отсутствуют, проверьте этот список адресов брокера на наличие неправильных адресов. Если список адресов брокера неверный, ошибки могут не возникнуть. Клиенты Kafka предполагают, что брокеры будут доступны в конечном итоге и повторяться навсегда, когда они получают сетевые ошибки.
maxRecordsPerPartition None Максимальное количество записей для каждой секции Spark. При установке соединитель разделяет секции Kafka, чтобы каждая секция Spark считывала не больше всего этих записей. Допустимые значения: положительные целые числа.
Этот параметр также можно использовать с minPartitions. При задании обоих параметров Spark использует любой параметр, который приводит к дополнительным секциям.
minPartitions None Минимальное количество секций Spark для чтения из Kafka. При установке соединитель разбивает большие секции Kafka, чтобы увеличить параллелизм. Если не задано, Spark создает одну секцию для каждой секции раздела Kafka. Полезно для обработки отклонений данных или пиковых нагрузок. Допустимые значения: положительные целые числа.
Этот параметр повторно инициализирует потребителей Kafka для каждого триггера, что может повлиять на производительность с помощью SSL.
startingOffsets latest (потоковая передача), earliest (пакетная версия) Смещение, из которое начинается запрос. Допустимые значения: earliest, latestили строка JSON смещения для каждой секции, например {"topicA":{"0":23,"1":-2}}. В строке -1 JSON используется последнее смещение. -2 является самым ранним смещением.
Для потоковых запросов этот параметр применяется только при запуске нового запроса. Возобновленные запросы всегда используют контрольную точку. Во время запроса новые секции начинают читаться с самого раннего смещения.
Для пакетных latest запросов запрещено.
startingOffsetsByTimestamp None Список начальных смещения для каждой секции, указанный как метки времени в миллисекундах. Если для метки времени не существует смещения, поведение запроса определяется startingOffsetsByTimestampStrategy. Допустимые значения: строка JSON меток времени для каждой секции, например {"topicA":{"0":1000,"1":2000}}.
Для потоковых запросов этот параметр применяется только при запуске нового запроса. Возобновленные запросы всегда используют контрольную точку. Во время запроса новые секции начинают читаться с самого раннего смещения.
startingOffsetsByTimestampStrategy error Стратегия, используемая при отсутствии смещения для метки времени, указанной в startingOffsetsByTimestamp или startingTimestamp. Допустимые значения: error (вызывает исключение), latest (использует последнее доступное смещение).
startingTimestamp None Глобальная метка времени запуска в миллисекундах, которая применяется ко всем секциям. Если для метки времени не существует смещения, поведение управляется startingOffsetsByTimestampStrategy. Допустимые значения: неотрицательных целых чисел.
subscribe None Разделы, на которые нужно подписаться. Необходимо указать именно один из subscribesubscribePatternпараметров или assign параметров. Допустимые значения: разделенный запятыми список имен разделов.
subscribePattern None Шаблон, используемый для подписки на разделы. Необходимо указать именно один из subscribesubscribePatternпараметров или assign параметров. Например: topic.*. Допустимые значения: любая строка Java regex.

Следующие параметры применяются только к потоковым чтениям со spark.readStream.format("kafka")следующими параметрами:

Key По умолчанию Description
bytesEstimateWindowLength 300s Период времени, используемый для оценки оставшихся байтов для estimatedTotalBytesBehindLatest метрики. Допустимые значения: строки длительности, 10m например или 600s. Ознакомьтесь с получением метрик Kafka.
maxOffsetsPerTrigger None Максимальное количество смещения для обработки интервала триггера. Смещения распределяются пропорционально между секциями раздела. Допустимые значения: положительные целые числа.
maxTriggerDelay 15m Максимальное время ожидания minOffsetsPerTrigger до активации. Допустимые значения: строки длительности, 10m например или 600s.
minOffsetsPerTrigger None Минимальное количество смещения для накапливания перед активацией микропакета. По maxTriggerDelay достижении микропакет выполняется независимо от того, Допустимые значения: положительные целые числа.

Параметры смещения, которые применяются только к пакетным считываниям, spark.read.format("kafka")см. в параметрах Kafka DataFrameReader.

Параметры клиента Kafka (kafka.*) и проверки подлинности см. в разделе "Параметры".

Параметры DataFrameWriter

Используйте эти параметры с DataFrameWriter.option() и DataFrameWriterV2.option() для управления Azure Databricks записи данных.

Example

В следующем примере задано mergeSchema значение True для записи таблицы Delta Lake:

Python
df.write.format("delta").option("mergeSchema", True).saveAsTable("my_table")
Scala
df.write.format("delta").option("mergeSchema", "true").saveAsTable("my_table")

Avro

Key По умолчанию Description
avroSchema None Полная схема Avro в виде строки JSON. Используйте этот параметр, чтобы преобразовать типы SQL Spark в определенные типы Avro. Применяется к avro-файлу.
avroSchemaUrl None URL-адрес, указывающий на файл схемы Avro. Используйте вместо того, avroSchema когда схема хранится внешне. Взаимоисключающ с avroSchema. Применяется к avro-файлу.
compression snappy Кодек сжатия, используемый при записи. Допустимые значения: uncompressed, , , deflatesnappybzip2xzzstandard Применяется к avro-файлу.
recordName topLevelRecord Имя записи верхнего уровня в выходной схеме Avro. Применяется к avro-файлу.
positionalFieldMatching false Следует ли сопоставлять столбцы между схемой Spark и схемой Avro по позиции поля вместо имени. Применяется к avro-файлу.
recordNamespace Пустая строка Пространство имен для записи верхнего уровня в выходной схеме Avro. Применяется к avro-файлу.

Delta Lake и Apache Iceberg

Key По умолчанию Description
clusterByAuto false Следует ли включить автоматическую кластеризацию жидкости, где Azure Databricks выбирает столбцы кластеризации на основе шаблонов запросов. Допустимо только с mode("overwrite"). Нельзя использовать с append режимом. Доступно в Databricks Runtime 16.4 и более поздних версий. Применяется к использованию отказоустойчивой кластеризации для таблиц.
mergeSchema None Следует ли включить эволюцию схемы для операции записи. Новые столбцы в исходном кадре данных добавляются в целевую схему таблицы. Применяется к добавкам пакетной и потоковой передачи. Применяется к схеме таблицы update.
overwriteSchema None Следует ли заменить схему таблицы и секционирование при перезаписи. Требуется mode("overwrite") без replaceWhere. Нельзя использовать с partitionOverwriteMode. Применяется к схеме таблицы update.
partitionOverwriteMode None Режим перезаписи секции. Установите для этого значение, чтобы dynamic перезаписать только разделы, содержащие новые данные, оставляя все остальные секции без изменений. Устаревший режим, не поддерживаемый для бессерверных вычислений или Databricks SQL. Допустимые значения: static, dynamic. Применяется к выборочному перезаписи данных с помощью Delta Lake.
replaceOn None Логическое выражение, которое соответствует строкам в целевой таблице для замены строк из исходного запроса. Может ссылаться на столбцы из целевой таблицы и исходного запроса. Строки в целевом объекте, который соответствует исходной строке, удаляются и заменяются. Если источник пуст, удаление не происходит. Используется targetAlias для диамбигуации ссылок на столбцы. Доступно в Databricks Runtime 17.1 и более поздних версиях. Применяется к выборочному перезаписи данных с помощью Delta Lake.
replaceUsing None Разделенный запятыми список имен столбцов, используемый для сопоставления строк между целевой таблицей и исходным запросом. Целевой объект и источник должны содержать все перечисленные столбцы. Строки в целевом объекте, соответствующие исходной строке при сравнении равенства, удаляются и заменяются. NULL Значения обрабатываются как не равные и не будут соответствовать. Доступно в Databricks Runtime 16.3 и более поздних версиях. Применяется к выборочному перезаписи данных с помощью Delta Lake.
replaceWhere None Выражение предиката. Атомарно перезаписывает только записи, соответствующие предикату. Применяется к выборочному перезаписи данных с помощью Delta Lake.
targetAlias None Псевдоним строки для целевой таблицы. Используйте для ссылки на столбцы или replaceOnreplaceWhere для диамбигуации, если условие ссылается на столбцы из целевой таблицы и исходного запроса. Применяется к выборочному перезаписи данных с помощью Delta Lake.
txnAppId None Уникальная строка, определяющая приложение для идемпотентной записи в foreachBatch операциях. Используйте вместе с txnVersion тем, чтобы обеспечить точное запись в несколько таблиц Delta Lake. Применяется к использованию foreachBatch для записи идемпотентной таблицы.
txnVersion None Монотонно увеличивающееся число, используемое в качестве версии транзакции для идемпотентной записи в foreachBatch операциях. Используйте вместе с txnAppId тем, чтобы обеспечить точное запись в несколько таблиц Delta Lake. Применяется к использованию foreachBatch для записи идемпотентной таблицы.
optimizeWrite None Включение автоматической оптимизации записи для этой операции записи. Переопределяет конфигурацию spark.databricks.delta.optimizeWrite.enabled . Применяется к Несколько Delta Lake в Azure Databricks?.
userMetadata None Определяемая пользователем строка, добавленная к метаданным фиксации для операции записи. Видимый в выходных DESCRIBE HISTORYданных . Применяется к таблицам Обогащения с пользовательскими метаданными.

CSV

Key По умолчанию Description
charToEscapeQuoteEscaping \0 (не включено) Символ, используемый для escape-символа, если он отличается от символа кавычки. Применяется к csv-файлу (DataFrameWriter).
compression none Кодек сжатия, используемый при записи. Допустимые значения: none, , bzip2gziplz4, snappy, deflate. zstd Применяется к csv-файлу (DataFrameWriter).
dateFormat yyyy-MM-dd Формат строки для значений столбцов даты. Применяется к csv-файлу (DataFrameWriter).
emptyValue Пустая строка Строка, написанная для пустых (непустых) значений. Применяется к csv-файлу (DataFrameWriter).
encoding UTF-8 Кодировка символов для выходных файлов. Применяется к csv-файлу (DataFrameWriter).
escape \ Символ, используемый для escape-кавычек значений. Применяется к csv-файлу (DataFrameWriter).
escapeQuotes true Следует ли экранировать символы кавычки внутри значений поля с кавычками. Применяется к csv-файлу (DataFrameWriter).
header false Следует ли записывать имена столбцов в качестве первой строки выходных данных. Применяется к csv-файлу (DataFrameWriter).
ignoreLeadingWhiteSpace false Следует ли обрезать ведущие пробелы из значений при написании. Применяется к csv-файлу (DataFrameWriter).
ignoreTrailingWhiteSpace false Следует ли обрезать конечные пробелы из значений при записи. Применяется к csv-файлу (DataFrameWriter).
lineSep \n Строка разделителя строк, используемая между записями. Применяется к csv-файлу (DataFrameWriter).
locale en-US Идентификатор java.util.Locale. Влияет на форматирование значений меток даты и времени при написании.
nullValue Пустая строка Строка, написанная для значений NULL. Применяется к csv-файлу (DataFrameWriter).
quote " Символ, используемый для значений полей кавычки, содержащих разделитель. Применяется к csv-файлу (DataFrameWriter).
quoteAll false Следует ли заключать все значения полей в кавычки независимо от содержимого. Применяется к csv-файлу (DataFrameWriter).
sep , Символ разделителя полей. Применяется к csv-файлу (DataFrameWriter).
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] Строка форматирования для значений столбцов метки времени. Применяется к csv-файлу (DataFrameWriter).
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Форматирование строки метки времени без значений столбцов часового пояса (TimestampNTZType).

Excel

Key По умолчанию Description
dataAddress None Имя листа или начальная ячейка записи. Если опущено, записывается на лист с именем Sheet1 , начиная с ячейки A1. Принимает имя листа ("SheetName") или ссылку на одну ячейку ("SheetName!A1"). Диапазоны ячеек не поддерживаются для операций записи.
dateFormatInWrite yyyy-mm-dd Excel строку формата ячейки, примененную к столбцам Date. Использует синтаксис формата Excel.
headerRows 0 Следует ли записывать имена столбцов в качестве первой строки. Допустимые значения: 0, 1.
timestampNTZFormat yyyy-mm-dd hh:mm:ss строка формата ячейки Excel применена к столбцам TimestampNTZ и Timestamp. Использует синтаксис формата Excel.
version xlsx Версия формата файла Excel для записи. Допустимые значения: xlsx, xls.

JSON

Key По умолчанию Description
compression none Кодек сжатия, используемый при записи. Допустимые значения: none, , bzip2gziplz4, snappy, deflate. zstd Применяется к json (DataFrameWriter).
dateFormat yyyy-MM-dd Формат строки для значений столбцов даты. Применяется к json (DataFrameWriter).
encoding UTF-8 Кодировка символов для выходных файлов. Применяется к json (DataFrameWriter).
ignoreNullFields значение spark.sql.jsonGenerator.ignoreNullFields Следует ли пропускать поля со значениями NULL из выходных данных JSON. Применяется к json (DataFrameWriter).
lineSep \n Строка разделителя строк, используемая между записями. Применяется к json (DataFrameWriter).
locale en-US Идентификатор java.util.Locale. Влияет на форматирование значений меток даты и времени при написании.
pretty false Следует ли включать довольно (отступные, многострочный) выходные данные JSON.
sortKeys false Следует ли отсортировать ключи объектов JSON в алфавитном порядке в выходных данных. Полезно для производства детерминированных выходных данных.
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] Строка форматирования для значений столбцов метки времени. Применяется к json (DataFrameWriter).
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Форматирование строки метки времени без значений столбцов часового пояса (TimestampNTZType).
writeNonAsciiCharacterAsCodePoint false Следует ли кодировать символы, отличные от ASCII, как \uXXXX escape-последовательности Юникода вместо символов UTF-8 в выходных данных.

ОРК

Key По умолчанию Description
compression zstd Кодек сжатия, используемый при записи. Допустимые значения: none, uncompressed, snappyzliblzozstd, . lz4brotli Применяется к orc (DataFrameWriter).

Паркетным

Key По умолчанию Description
compression snappy Кодек сжатия, используемый при записи. Допустимые значения: none, uncompressed, gzip; zstdlz4_rawsnappylzobrotlilz4 Применяется к parquet (DataFrameWriter).
spark.sql.parquet.outputTimestampType INT96 Физический тип, используемый для кодирования столбцов метки времени. Допустимые значения: INT96, , TIMESTAMP_MICROSTIMESTAMP_MILLIS. Используйте INT96 для совместимости с устаревшими средствами чтения Parquet, которые не поддерживают стандартные типы меток времени.

Текст

Key По умолчанию Description
compression none Кодек сжатия, используемый при записи. Допустимые значения: none, , bzip2gziplz4, snappy, deflate. zstd Применяется к тексту (DataFrameWriter).
encoding UTF-8 Кодировка символов для выходных файлов.
lineSep \n Строка разделителя строк, используемая между записями. Применяется к тексту (DataFrameWriter).

XML

Key По умолчанию Description
arrayElementName item Имя элемента для элементов массива, не имеющих явного имени. Применяется к xml (DataFrameWriter).
attributePrefix _ Префикс, подготовленный к именам полей, соответствующим атрибутам XML. Применяется к xml (DataFrameWriter).
compression none Кодек сжатия, используемый при записи. Допустимые значения: none, , bzip2gziplz4, snappy, deflate. zstd Применяется к xml (DataFrameWriter).
dateFormat yyyy-MM-dd Формат строки для значений столбцов даты. Применяется к xml (DataFrameWriter).
declaration version="1.0" encoding="UTF-8" standalone="yes" Строка объявления XML, написанная в верхней части каждого выходного файла. Задайте пустую строку, чтобы отключить объявление. Применяется к xml (DataFrameWriter).
encoding UTF-8 Кодировка символов для выходных файлов. Применяется к xml (DataFrameWriter).
indent 4 пробела Строка, используемая для отступа дочерних элементов в выходных данных. Задайте пустую строку, чтобы отключить отступ и записать каждую строку в одной строке.
locale en-US Идентификатор java.util.Locale. Влияет на форматирование значений меток даты и времени при написании.
nullValue null Строка, написанная для значений NULL. Если задано значение null, атрибуты и дочерние элементы для полей NULL опущены. Применяется к xml (DataFrameWriter).
rootTag ROWS Тег корневого элемента, который упаковывает все элементы строки в выходные данные. Применяется к xml (DataFrameWriter).
rowTag ROW Тег элемента, представляющий строку в выходных данных. Применяется к xml (DataFrameWriter).
singleVariantColumn None Имя одного столбца Variant для записи в XML-файлы. Применяется к xml (DataFrameWriter).
timestampFormat yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] Строка форматирования для значений столбцов метки времени. Применяется к xml (DataFrameWriter).
timestampNTZFormat yyyy-MM-dd'T'HH:mm:ss[.SSS] Форматирование строки метки времени без значений столбцов часового пояса. Применяется к xml (DataFrameWriter).
validateName true Следует ли вызывать исключение, если имя столбца не является допустимым идентификатором XML-элемента. Применяется к xml (DataFrameWriter).
valueTag _VALUE Имя поля, используемое для символьных данных в XML-элементах, которые также имеют атрибуты или дочерние элементы. Применяется к xml (DataFrameWriter).

Параметры DataStreamWriter

Используйте эти параметры для DataStreamWriter.option() настройки потоковой записи.

Example

В следующем примере устанавливается расположение контрольной точки для потока:

Python
(df.writeStream
  .format("delta")
  .option("checkpointLocation", "/path/to/checkpoint")
  .start("/path/to/table"))
Scala
df.writeStream
  .format("delta")
  .option("checkpointLocation", "/path/to/checkpoint")
  .start("/path/to/table")

Общие

Key По умолчанию Description
checkpointLocation Нет (обязательно) Путь к каталогу контрольной точки для потокового запроса. Требуется для отказоустойчивости и точно один раз гарантии обработки. Каждый запрос потоковой передачи должен использовать уникальное расположение контрольной точки. Databricks рекомендует хранить контрольные точки в томе каталога Unity или пути к облачному хранилищу. Смотрите контрольные точки структурированной потоковой передачи.
path None Путь вывода для приемников потоковой передачи на основе файлов, таких как Parquet. Применяется только к форматам на основе файлов.

Приемник консоли

Key По умолчанию Description
numRows 20 Количество строк, отображаемых для каждого микропакета при записи в приемник консоли.
truncate true Следует ли усечь длинные строки при отображении строк. Установите для false отображения полных строковых значений.

Delta Lake

Следующие параметры применяются при написании потока в таблицу Delta Lake с помощью format("delta"). Параметры, доступные только для перезаписи, например overwriteSchema, replaceWhereи partitionOverwriteMode не поддерживаются для потоковой записи.

Key По умолчанию Description
mergeSchema false Следует ли развивать схему таблицы Delta Lake, когда потоковый кадр данных содержит новые столбцы. Применяется только к режиму добавления выходных данных. Применяется к схеме таблицы update.
userMetadata None Определяемая пользователем строка, добавленная к метаданным фиксации для операции записи. Видимый в выходных DESCRIBE HISTORYданных . Применяется к таблицам Обогащения с пользовательскими метаданными.

Приемник файлов

Следующий параметр применяется при написании потока в форматы на основе файлов (Parquet, JSON, CSV, ORC, текст). Дополнительные сведения о параметрах формата см. в разделе "Параметры DataFrameWriter".

Key По умолчанию Description
retention None Как долго сохранять файлы метаданных приемника, используемые для отказоустойчивости и сжатия. Принимает строку времени, например 7 days или 24 hours. Если не задано, файлы метаданных сохраняются на неопределенный срок.

Приемник Kafka

Полный список параметров записи потоков в Kafka см. в разделе "Параметры".

Key По умолчанию Description
kafka.bootstrap.servers None Обязательно. Разделенный запятыми список адресов брокера host:port Kafka.
topic None Целевой раздел Kafka для всех строк. Требуется, если кадр данных не содержит topic столбец.
kafka.* None Любая конфигурация производителя Kafka , префиксированная с kafka.префиксом . Например: kafka.compression.type.

Приемник памяти

Key По умолчанию Description
queryName Нет (обязательно) Имя таблицы в памяти, в которую записывается запрос. Требуется для приемника памяти. Также можно настроить с помощью .queryName().
mode exactlyonce Гарантия доставки для приемника памяти. exactlyonce использует микро-пакетный режим с точной семантикой. atleastonce использует непрерывный режим с семантикой по крайней мере один раз. Допустимые значения: exactlyonce, atleastonce.

Параметры функции Spark

Некоторые встроенные функции Spark SQL принимают options карту, которая управляет анализом или сериализацией поведения. Передайте параметры в виде Python dict или Scala Map[String, String].

Example

В следующем примере анализируется столбец JSON при удалении неправильно сформированных записей:

Python
from pyspark.sql.functions import from_json
from pyspark.sql.types import StructType, StructField, StringType

schema = StructType([StructField("name", StringType())])
df = df.withColumn("parsed", from_json("json_col", schema, {"mode": "DROPMALFORMED"}))
Scala
import org.apache.spark.sql.functions.from_json
import org.apache.spark.sql.types._

val schema = StructType(Seq(StructField("name", StringType)))
val df = df.withColumn("parsed", from_json(col("json_col"), schema, Map("mode" -> "DROPMALFORMED")))

Avro

Функции Avro принимают те же параметры, что и соответствующие параметры кадра данных:

Example

В следующем примере декодирует столбец Avro с включенной эволюцией схемы:

Python
from pyspark.sql.functions import from_avro

df = df.withColumn("decoded", from_avro("avro_col", json_schema, {"avroSchemaEvolutionMode": "restart"}))
Scala
import org.apache.spark.sql.avro.functions.from_avro

val df = df.withColumn("decoded", from_avro(col("avro_col"), jsonSchema, Map("avroSchemaEvolutionMode" -> "restart")))

Кроме того, варианты from_avro реестра схем и to_avro принимают следующие параметры:

Key По умолчанию Description
schemaId None Идентификатор схемы из реестра схем Confluent, используемый при декодировании данных Avro, которые были закодированы с схемой, несовместимой с jsonFormatSchema. Применяется только к from_avro .
confluent.schema.registry.* None Свойства конфигурации клиента реестра схем Confluent. Передайте любое клиентское свойство Confluent SR с помощью этого префикса, например confluent.schema.registry.basic.auth.user.info для базовых учетных данных проверки подлинности. Требуется для вариантов и вариантов from_avroto_avroреестра схем.

CSV

Функции CSV принимают те же параметры, что и соответствующие параметры кадра данных:

Example

Следующий пример считывает CSV-файл с пользовательским разделителем и NULL значением:

Python
from pyspark.sql.functions import from_csv
from pyspark.sql.types import StructType, StructField, IntegerType, StringType

schema = StructType([StructField("id", IntegerType()), StructField("name", StringType())])
df = df.withColumn("parsed", from_csv("csv_col", schema, {"sep": "|", "nullValue": "N/A"}))
Scala
import org.apache.spark.sql.functions.from_csv
import org.apache.spark.sql.types._

val schema = StructType(Seq(StructField("id", IntegerType), StructField("name", StringType)))
val df = df.withColumn("parsed", from_csv(col("csv_col"), schema, Map("sep" -> "|", "nullValue" -> "N/A")))

JSON

Функции JSON принимают те же параметры, что и соответствующие параметры кадра данных:

Example

В следующем примере выполняется запись JSON с полями NULL , которые игнорируются и включено довольно форматирование:

Python
from pyspark.sql.functions import to_json

df = df.withColumn("json_str", to_json("struct_col", {"pretty": "true", "ignoreNullFields": "true"}))
Scala
import org.apache.spark.sql.functions.to_json

val df = df.withColumn("json_str", to_json(col("struct_col"), Map("pretty" -> "true", "ignoreNullFields" -> "true")))

Protobuf

from_protobuf и to_protobuf не используйте файловый источник Данных. Данные Protobuf всегда считываются и записываются как двоичные столбцы с помощью этих функций. Параметры передаются в виде Map[String, String] регистра.

Example

В следующем примере декодирует столбец Protobuf с помощью режима PERMISSIVE:

Python
from pyspark.sql.functions import from_protobuf

df = df.withColumn("decoded", from_protobuf("proto_col", "MyMessage", "/path/to/descriptor.desc",
    {"mode": "PERMISSIVE", "enums.as.ints": "true"}))
Scala
import org.apache.spark.sql.protobuf.functions.from_protobuf

val df = df.withColumn("decoded", from_protobuf(col("proto_col"), "MyMessage", "/path/to/descriptor.desc",
    Map("mode" -> "PERMISSIVE", "enums.as.ints" -> "true")))

Функции Protobuf используют следующие параметры:

Key По умолчанию Description
mode FAILFAST Обработка поврежденных записей. FAILFAST выдает исключение. PERMISSIVE Задает для неправильно сформированных полей значение NULL. Допустимые значения: FAILFAST, PERMISSIVE. Применимо к from_protobuf.
recursive.fields.max.depth -1 (отключено) Максимальная глубина рекурсии для рекурсивных полей Protobuf. Установите для 0 отключения поддержки рекурсивных полей. Допустимые значения: 0 в 10. Применимо к from_protobuf.
convert.any.fields.to.json false Следует ли преобразовывать поля Protobuf Any в строку JSON вместо строки STRUCT. Применимо к from_protobuf.
emit.default.values false Следует ли выдавать поля с нуля или значениями по умолчанию (семантика proto3). Если falseполя со значениями по умолчанию опущены из выходных данных. Применимо к from_protobuf.
enums.as.ints false Следует ли отображать поля перечисления в виде целых значений вместо строк. Применимо к from_protobuf.
upcast.unsigned.ints false Следует ли переадресовать uint32Long и uint64 предотвращать Decimal(20,0) переполнение целых чисел. Применимо к from_protobuf.
unwrap.primitive.wrapper.types false Следует ли распаковывать google.protobuf типы оболочки (например, Int32Value и StringValue) к соответствующим примитивным типам Spark. Применимо к from_protobuf.
retain.empty.message.types false Следует ли сохранять пустые типы сообщений Protobuf в выходной схеме, вставляя фиктивный столбец. Применимо к from_protobuf.
schema.registry.subject None Имя субъекта реестра схем. Обязательный при использовании вариантов from_protobuf реестра схем и to_protobuf.
schema.registry.address None Адрес реестра схем (узел и порт). Обязательный при использовании вариантов from_protobuf реестра схем и to_protobuf.
schema.registry.protobuf.name None Указывает, какое сообщение Protobuf следует использовать, если тема реестра схем содержит несколько сообщений. Optional.

XML

Функции XML принимают те же параметры, что и соответствующие параметры кадра данных:

Example

В следующем примере выполняется запись XML с пользовательскими тегами корневого и строкового кода:

Python
from pyspark.sql.functions import to_xml

df = df.withColumn("xml_str", to_xml("struct_col", {"rootTag": "records", "rowTag": "record"}))
Scala
import org.apache.spark.sql.functions.to_xml

val df = df.withColumn("xml_str", to_xml(col("struct_col"), Map("rootTag" -> "records", "rowTag" -> "record")))