Size: a a a

2021 March 19

AE

Alexey Evdokimov in Data Engineers
Anton Zadorozhniy
Динамическую)) но я понял, у вас уникальная снежинка которая первый раз в отрасли встречается)
ну вот кусок конфига тебе, давай расскажи мне как формально схему для такого описать

spark.meta.ds.input.columns.{TYPE3}=userid,lat,lon,velocity,timestamp,date,year,month,dow,day,hour,minute,gid,final_country
spark.meta.ds.input.columns.{TYPE4}=userid,lat,lon,final_country,timestamp,date,year,month,dow,day,hour,minute,gid

# NI from GB
spark.meta.op.operation.match_NI_1=splitMatch
spark.meta.op.input.match_NI_1.source={TYPE3}
spark.meta.op.input.match_NI_1.values=NI
spark.meta.op.definition.match_NI_1.source.match.column={TYPE3}.gid
spark.meta.op.definition.match_NI_1.values.match.column=NI.gid
spark.meta.op.output.match_NI_1.matched={TYPE3}/NI

spark.meta.op.operation.match_NI_2=splitMatch
spark.meta.op.input.match_NI_2.source={TYPE4}
spark.meta.op.input.match_NI_2.values=NI
spark.meta.op.definition.match_NI_2.source.match.column={TYPE4}.gid
spark.meta.op.definition.match_NI_2.values.match.column=NI.gid
spark.meta.op.output.match_NI_2.matched={TYPE4}/NI

spark.meta.ds.output.columns.{TYPE3}/NI={TYPE3}.userid,{TYPE3}.lat,{TYPE3}.lon,{TYPE3}.velocity,{TYPE3}.timestamp,{TYPE3}.date,{TYPE3}.year,{TYPE3}.month,{TYPE3}.dow,{TYPE3}.day,{TYPE3}.hour,{TYPE3}.minute,{TYPE3}.gid,{TYPE3}.final_country

spark.meta.ds.output.columns.{TYPE4}/NI={TYPE4}.userid,{TYPE4}.lat,{TYPE4}.lon,{TYPE4}.final_country,{TYPE4}.timestamp,{TYPE4}.date,{TYPE4}.year,{TYPE4}.month,{TYPE4}.dow,{TYPE4}.day,{TYPE4}.hour,{TYPE4}.minute,{TYPE4}.gid
источник

N

Nikita Blagodarnyy in Data Engineers
Anton Zadorozhniy
Что делать надо?
Конфиги катать. Желательно не по часу. Поменялись, например, конфиги gc resoursemanager, в амбари это 5 минут занимает обновить. Мне рассказывают, что час надо потртатить.
источник

GP

Grigory Pomadchin in Data Engineers
Nikita Blagodarnyy
Я слово терраформ знаю.
терраформ можно
источник

AE

Alexey Evdokimov in Data Engineers
значения в переменных вообще задаются снаружи, я не знаю на момент запуска во что они раскроются. список там фиксированный, или может из какой-то рдд, или что вообще
источник

AE

Alexey Evdokimov in Data Engineers
пока я не выполнился, у меня никакой схемы нет
источник

AZ

Anton Zadorozhniy in Data Engineers
Alexey Evdokimov
ну вот кусок конфига тебе, давай расскажи мне как формально схему для такого описать

spark.meta.ds.input.columns.{TYPE3}=userid,lat,lon,velocity,timestamp,date,year,month,dow,day,hour,minute,gid,final_country
spark.meta.ds.input.columns.{TYPE4}=userid,lat,lon,final_country,timestamp,date,year,month,dow,day,hour,minute,gid

# NI from GB
spark.meta.op.operation.match_NI_1=splitMatch
spark.meta.op.input.match_NI_1.source={TYPE3}
spark.meta.op.input.match_NI_1.values=NI
spark.meta.op.definition.match_NI_1.source.match.column={TYPE3}.gid
spark.meta.op.definition.match_NI_1.values.match.column=NI.gid
spark.meta.op.output.match_NI_1.matched={TYPE3}/NI

spark.meta.op.operation.match_NI_2=splitMatch
spark.meta.op.input.match_NI_2.source={TYPE4}
spark.meta.op.input.match_NI_2.values=NI
spark.meta.op.definition.match_NI_2.source.match.column={TYPE4}.gid
spark.meta.op.definition.match_NI_2.values.match.column=NI.gid
spark.meta.op.output.match_NI_2.matched={TYPE4}/NI

spark.meta.ds.output.columns.{TYPE3}/NI={TYPE3}.userid,{TYPE3}.lat,{TYPE3}.lon,{TYPE3}.velocity,{TYPE3}.timestamp,{TYPE3}.date,{TYPE3}.year,{TYPE3}.month,{TYPE3}.dow,{TYPE3}.day,{TYPE3}.hour,{TYPE3}.minute,{TYPE3}.gid,{TYPE3}.final_country

spark.meta.ds.output.columns.{TYPE4}/NI={TYPE4}.userid,{TYPE4}.lat,{TYPE4}.lon,{TYPE4}.final_country,{TYPE4}.timestamp,{TYPE4}.date,{TYPE4}.year,{TYPE4}.month,{TYPE4}.dow,{TYPE4}.day,{TYPE4}.hour,{TYPE4}.minute,{TYPE4}.gid
Да запросто, вот хотя бы имена колонок могут быть любыми вообще, или ограничены по какому-то дата каталогу ил набору резалтсетов? Операторы явно имеют какую-то структуру тож
источник

AZ

Anton Zadorozhniy in Data Engineers
Но я не убеждаю, динамическим схем не бывает, база же не знает какая будет сигнатура резалтсета селекта пока его не выполнит)
источник

AE

Alexey Evdokimov in Data Engineers
Anton Zadorozhniy
Да запросто, вот хотя бы имена колонок могут быть любыми вообще, или ограничены по какому-то дата каталогу ил набору резалтсетов? Операторы явно имеют какую-то структуру тож
да никак не ограничены. контекст задаёт правила
источник

AZ

Anton Zadorozhniy in Data Engineers
Alexey Evdokimov
да никак не ограничены. контекст задаёт правила
Так про то и речь, контекст то известен
источник

AE

Alexey Evdokimov in Data Engineers
DSL тут полный по тюрингу, на нём можно писать чё угодно, было бы желание.
источник

AE

Alexey Evdokimov in Data Engineers
пока не запустились, контекста нет. потому что это темплейт для процесса, а не описание процесса
источник

AE

Alexey Evdokimov in Data Engineers
и вот пока переменные не пришли, процесса нет, он собирается после того как они специфицировались
источник

AZ

Anton Zadorozhniy in Data Engineers
Вы когда пишете SQL в хорошей среде обращали внимание как подсказывают имена колонок в SELECT строго из тех таблиц которые указаны в FROM?
источник

KS

K S in Data Engineers
Nikita Blagodarnyy
А кто суперямлпогромист, что там нынче модно заместо ансибле? Параллельное там, конкурентное. Хрыч, растолкуй, а.
Для on premise?
источник

AE

Alexey Evdokimov in Data Engineers
Anton Zadorozhniy
Вы когда пишете SQL в хорошей среде обращали внимание как подсказывают имена колонок в SELECT строго из тех таблиц которые указаны в FROM?
если колонки заданы как {SIGNALS_COLUMNS}, то пока переменная не подставлена, подсказывать не из чего
источник

N

Nikita Blagodarnyy in Data Engineers
K S
Для on premise?
угу
источник

AE

Alexey Evdokimov in Data Engineers
а подставлена она будет после того как сатанист задаст её в тимсити в параметрах билда, не раньше
источник

EK

Evgenii Kuznetcov in Data Engineers
Alexey Evdokimov
так ладно. я тут вижу что все большие фанаты ямла (который ничем не лучше любого другого текстового, хоть ини, хоть не ини), и гуёв никто не любит
Выскажу свое мнение. Беспрестрастное, потому что я не люблю дата инжениринг что с гуем, что без :)

Работа с такой конфигурацией - это полноценное программирование. Программирование на yaml, ini или json имеет все сложности программирования, но только теперь без полезных инструментов языков программирования.
Замена json/yaml на GUI - шаг еще дальше в эту сторону: у людей отняли еще и возможности текстового редактора (копипаст).

Поэтому люди и плюются.
источник

K

KrivdaTheTriewe in Data Engineers
Alexey Evdokimov
а подставлена она будет после того как сатанист задаст её в тимсити в параметрах билда, не раньше
можно билдить проект со статическими колонками
источник

AZ

Anton Zadorozhniy in Data Engineers
Alexey Evdokimov
а подставлена она будет после того как сатанист задаст её в тимсити в параметрах билда, не раньше
А он там может вообще любой набор символов записать, или есть какие-то ограничения все-таки?
источник