Опции чтения

Мультикластерное чтение

По умолчанию, расчет обращается к данным на кластере, который предоставляет вычислительные мощности (при запуске напрямую или при использовании Standalone кластера). При этом SPYT поднимает собственные RPC прокси для разгрузки общих кластерных прокси.

В версии 2.2.0 появилась возможность чтения данных с разных кластеров YTsaurus. Для этого необходимо явно указать адрес кластера в пути к таблице.

spark.read.yt('<cluster="localhost:8000">//home/table').show() # Таблица на кластере localhost:8000

spark.read.yt('//home/table').show() # Таблица на домашнем кластере

Примечание

Чтение с других кластеров YTsaurus происходит через общие прокси, что может вызывать большую нагрузку на них при высоких объемах данных.

schema_hint

Жесткое указание типа колонки. Полезно в случае, когда колонка имеет тип any (сериализованный в yson сложный тип).
Значение будет десериализовано в указанный тип.

Пример на Python:

spark.read.schema_hint({"value": MapType(StringType(), LongType())}).yt("//sys/spark/examples/example_yson")

Пример на Scala:

df.write
    .schemaHint(Map("a" ->
        YtLogicalType.VariantOverTuple(Seq(
          (YtLogicalType.String, Metadata.empty), (YtLogicalType.Double, Metadata.empty)))))
    .yt(tmpPath)

transaction

Чтение под транзакцией. Подробнее можно узнать в разделе Чтение и запись под транзакцией.

Пример на Scala:

val transaction = YtWrapper.createTransaction(None, 10 minute)
df.write.transaction(transaction.getId.toString).yt(tmpPath)
transaction.commit().get(10, TimeUnit.SECONDS)

Schema v3

Чтение таблиц со схемой в формате type_v3 вместо type_v1. Настраивается в Spark конфигурации или опции записи.

Python example:

spark.read.option("parsing_type_v3", "true").yt("//sys/spark/examples/example_yson")