Опции чтения
Мультикластерное чтение
По умолчанию, расчет обращается к данным на кластере, который предоставляет вычислительные мощности (при запуске напрямую или при использовании 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")