Size: a a a

2021 January 27

AZ

Anton Zadorozhniy in Data Engineers
Alexandr Vladimirovich
получается что я могу установить Apache версию kafka, сверху поставить kafka connect и скачать этот коннектор?
я не уверен какая там совместимость с ванилью, вам нужно будет самим исследовать
источник

AV

Alexandr Vladimirovi... in Data Engineers
Anton Zadorozhniy
я не уверен какая там совместимость с ванилью, вам нужно будет самим исследовать
это понятное дело что надо проверять
просто во всей доке идет ссылка на confluent platform и на установку через Confluent Hub
источник

AZ

Anton Zadorozhniy in Data Engineers
Alexandr Vladimirovich
это понятное дело что надо проверять
просто во всей доке идет ссылка на confluent platform и на установку через Confluent Hub
confluent hub это автоматизация для их сборки, вы можете поставить коннекторы и своим тулингом, ансибл или что вы используете
источник

AZ

Anton Zadorozhniy in Data Engineers
или вообще в докер образ запечь например
источник

AZ

Anton Zadorozhniy in Data Engineers
confluent hub CLI  это локальная чисто инсталляция, для разработки; на большой кластер вам надо ставить джарники в директории https://docs.confluent.io/platform/current/connect/userguide.html#connect-installing-plugins
источник

AV

Alexandr Vladimirovi... in Data Engineers
спасибо за разъяснения)
источник

MK

Mikhail Kuznetsov in Data Engineers
Добрый день. Можно ли как-то в agg передавать динамически составленную строку с условиями агрегации?
Т.е.
val df2 = df1
   .groupBy($"some_fields")
   .agg(
     "some_string"
   )
Или какой-либо другой способ, поддерживающий динамически меняющиеся условия?
источник

K

KrivdaTheTriewe in Data Engineers
Mikhail Kuznetsov
Добрый день. Можно ли как-то в agg передавать динамически составленную строку с условиями агрегации?
Т.е.
val df2 = df1
   .groupBy($"some_fields")
   .agg(
     "some_string"
   )
Или какой-либо другой способ, поддерживающий динамически меняющиеся условия?
написать свой кастомный регулятор
источник

MK

Mikhail Kuznetsov in Data Engineers
KrivdaTheTriewe
написать свой кастомный регулятор
udf вы имеете ввиду?
источник

MB

Maksim Batsiuk in Data Engineers
добрый вечер, в чем может быть проблема: пишу в hdfs мелкие сообщения, удаётся записать пару сообщений и потом запись останавливается, хотя видно что приложение работает. Нагуглил такую команду hdfs debug recoverLease, после её исполнения опять несколько файлов пишет и потом стоп. Пишу мелкие файлы в один файл. Вроде как вычитал что Hadoop выделяет только минуту для записи в файл. Как решить эту проблему?
источник

A

Alex in Data Engineers
У вас большой интервал между записями?
источник

ИК

Иван Калининский... in Data Engineers
Mikhail Kuznetsov
Добрый день. Можно ли как-то в agg передавать динамически составленную строку с условиями агрегации?
Т.е.
val df2 = df1
   .groupBy($"some_fields")
   .agg(
     "some_string"
   )
Или какой-либо другой способ, поддерживающий динамически меняющиеся условия?
В чем проблема создать коллекцию [Column] и передавать её обычным способом: .agg(cols.head, cols.tail: _*) ? Не вижу здесь никакой сложности, возможно, ваша задача на самом деле шире?
источник

MB

Maksim Batsiuk in Data Engineers
нет
источник

MB

Maksim Batsiuk in Data Engineers
потоком идут файлы
источник

MB

Maksim Batsiuk in Data Engineers
Alex
У вас большой интервал между записями?
👆
источник

MK

Mikhail Kuznetsov in Data Engineers
Иван Калининский
В чем проблема создать коллекцию [Column] и передавать её обычным способом: .agg(cols.head, cols.tail: _*) ? Не вижу здесь никакой сложности, возможно, ваша задача на самом деле шире?
Мне нужно условия агрегации каждый раз задавать динамически, их количество и сама функция будет меняться
мб некорректно обозначил проблему - рандомный пример со статикой
.groupBy($"some_fields")
   .agg(
     concat_ws(" ", collect_list("par1")) as "concat1",
     max("par2")
   )

Мне хотелось бы иметь возможность делать как-то так
val concat = "concat_ws(" ", collect_list("par1")) as "concat1""
val max = "max("par2")  as max2"
val aggSeq = Seq(concat, max)
.groupBy($"some_fields")
   .agg(aggSeq)

т.е. заранее мне не известны ни функции агрегации ни колонки для них
источник

ИК

Иван Калининский... in Data Engineers
Mikhail Kuznetsov
Мне нужно условия агрегации каждый раз задавать динамически, их количество и сама функция будет меняться
мб некорректно обозначил проблему - рандомный пример со статикой
.groupBy($"some_fields")
   .agg(
     concat_ws(" ", collect_list("par1")) as "concat1",
     max("par2")
   )

Мне хотелось бы иметь возможность делать как-то так
val concat = "concat_ws(" ", collect_list("par1")) as "concat1""
val max = "max("par2")  as max2"
val aggSeq = Seq(concat, max)
.groupBy($"some_fields")
   .agg(aggSeq)

т.е. заранее мне не известны ни функции агрегации ни колонки для них
Значит надо каждую строку - агрегатную функцию обернуть в org.apache.spark.sql.functions.expr, сформировать Seq и передать в .agg, я выше писал способ
источник

ИК

Иван Калининский... in Data Engineers
Название класса по памяти писал, но вроде такое
источник

MK

Mikhail Kuznetsov in Data Engineers
Иван Калининский
Значит надо каждую строку - агрегатную функцию обернуть в org.apache.spark.sql.functions.expr, сформировать Seq и передать в .agg, я выше писал способ
про expr не в курсе был, спасибо за совет! буду пробовать
источник

N

Nikita Blagodarnyy in Data Engineers
Граждане, у нас тут в коммоне накопилась куча всяких вспомогательных функций для работы с DataFrame/DataSet/Sink спрака. Ну типа там df как-то сложно через dense_rank сагрегировать, поркеты рекурсивно прокомпактить, к схеме нужной примандить, с худи поработать, hbase посканить. Есть идея это заопенсурсить. Вопрос-оно вообще надо такое кому-то? А то процесс непростой, и если оно не надо, то и потеть неохота.
источник