Size: a a a

2019 December 05

Ik

Ilia ksen in Data Engineers
схему изменили заранее
источник

Ik

Ilia ksen in Data Engineers
то есть все поля есть, кроме нового
источник

N

Nikolay in Data Engineers
Можно сделать переключатель. Фитча флажек
источник

AL

Artem Likhomanenko in Data Engineers
Ilia ksen
На данный момент просто кидает ошибку, что нет такого поля
В схеме сказать что он может два типа имеет [string, null ]? Типо такого по аналогии с авро
источник

ME

Max Efremov in Data Engineers
Считать файлч посмотреть его колонки и определить, можно использовать или нет новое поле
источник

Ik

Ilia ksen in Data Engineers
Андрей Жуков
А что за ошибка? Чем и как вычитываете?
spark.read.schema(schema).parquet(cdir)
источник

Ik

Ilia ksen in Data Engineers
Max Efremov
Считать файлч посмотреть его колонки и определить, можно использовать или нет новое поле
Использовать в любом случае надо, даже если его нет, потому что в будущем оно появится))
источник

Ik

Ilia ksen in Data Engineers
Ilia ksen
Использовать в любом случае надо, даже если его нет, потому что в будущем оно появится))
это не моя прихоть это бизнес кейс
источник

АЖ

Андрей Жуков in Data Engineers
Ilia ksen
spark.read.schema(schema).parquet(cdir)
Тогда только костылить. Вы еще потом решите типы поменять в схеме и огребете дальше
источник

Ik

Ilia ksen in Data Engineers
Андрей Жуков
Тогда только костылить. Вы еще потом решите типы поменять в схеме и огребете дальше
ну типы менять не планируется)
источник

Ik

Ilia ksen in Data Engineers
Андрей Жуков
Тогда только костылить. Вы еще потом решите типы поменять в схеме и огребете дальше
то есть без костыля вообще никак?
источник

АЖ

Андрей Жуков in Data Engineers
Ilia ksen
то есть без костыля вообще никак?
Напиши кастомный ридер паркета,  который будет накидывать lit()
источник

AL

Artem Likhomanenko in Data Engineers
источник

AS

Anton Shelin in Data Engineers
Ilia ksen
Привет. Есть вопрос. Допустим писались паркетные файлы с одной схемой и решили добавить в данные новое поле, добавили его в схему заранее, но в паркете его еще нет, но появится например завтра. Как сделать так чтобы паркет вычитывался уже с новым полем, но просто обозначал его null?
может это https://spark.apache.org/docs/latest/sql-data-sources-parquet.html#schema-merging в авро точно знаю есть 2 схемы та с которой файл писался и та с которой файл читается. за счет этого обеспечивается эволюция. возможно вам надо подкидывать новую схему при чтении и задавать или дефолтное значение или у вас в новой схеме это поле должно быть нуллабл
источник

d

ddre_z in Data Engineers
Nikolay
Лучшую стратегию для чего ? Когда решается задача оптимизации , то должен быть критерий оптимальности. Если вы например зальете данные в ClickHouse , то у вас джойн будет быстрее ( у вас маленький объем данных ), но если у вас объем данных существенно возрастёт и не будет влезать в память сервера , на котором запускается , то КХ начнет падать
очевидно же, что мне нужно получить два датафрейма из двух csv с теми полями, которые сейчас находятся в большом файле по идентификатору
источник

d

ddre_z in Data Engineers
источник

Ik

Ilia ksen in Data Engineers
Окей спасибо всем
источник

AS

Anton Shelin in Data Engineers
Anton Shelin
может это https://spark.apache.org/docs/latest/sql-data-sources-parquet.html#schema-merging в авро точно знаю есть 2 схемы та с которой файл писался и та с которой файл читается. за счет этого обеспечивается эволюция. возможно вам надо подкидывать новую схему при чтении и задавать или дефолтное значение или у вас в новой схеме это поле должно быть нуллабл
можно еще вьюшку сделать CREATE VIEW schema2 AS SELECT f1..., NULL as new_field FROM schema1 f1;
источник

Ik

Ilia ksen in Data Engineers
Вот тут я специально уточнил, что мержить пока несчем;)
источник

Ik

Ilia ksen in Data Engineers
Нету новых файлов в паркете еще)
источник