Size: a a a

2021 March 30

АА

Артем Анистратов... in Moscow Spark
KrivdaTheTriewe
а для каких целей там спринг используется?
Первое что я увидел на эту тему:

https://m.habr.com/ru/company/jugru/blog/325070/

Из других источников видел, что спарк используют как припарку к спрингу. И используют dataframe api
источник

ЕГ

Евгений Глотов... in Moscow Spark
Клиент на сайте вбивает поиск, а на бэкэнде быстренько с360 собирается😆
источник

ЕГ

Евгений Глотов... in Moscow Spark
Паша Финкельштейн
Ну в принципе норм, кто сказал что ETL должен быть только стенделон? Берём, строим обычное веб-приложение, только на слое работы с данными у нас спарк
☝️
источник

N

Nikita Blagodarnyy in Moscow Spark
Паша Финкельштейн
Ну в принципе норм, кто сказал что ETL должен быть только стенделон? Берём, строим обычное веб-приложение, только на слое работы с данными у нас спарк
мапим сабмиты на вызовы рест-айпи
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Nikita Blagodarnyy
мапим сабмиты на вызовы рест-айпи
Ну да, как админка тоже может работать
источник

AS

Andrey Smirnov in Moscow Spark
Nikita Blagodarnyy
мапим сабмиты на вызовы рест-айпи
мы так делаем, только без спринга, а это что-то плохое?
источник

K

KrivdaTheTriewe in Moscow Spark
это старая статья оч
источник

K

KrivdaTheTriewe in Moscow Spark
Но мне непонятно, зачем спринг , если честно
источник

K

KrivdaTheTriewe in Moscow Spark
ну в плане, какая задача
источник

N

Nikita Blagodarnyy in Moscow Spark
KrivdaTheTriewe
ну в плане, какая задача
сделать защищенный рест-апи к сабмитам
источник

K

KrivdaTheTriewe in Moscow Spark
Nikita Blagodarnyy
сделать защищенный рест-апи к сабмитам
а причем тут спарк?
источник

N

Nikita Blagodarnyy in Moscow Spark
KrivdaTheTriewe
а причем тут спарк?
ну он сабмиты выполняет
источник

K

KrivdaTheTriewe in Moscow Spark
Nikita Blagodarnyy
ну он сабмиты выполняет
ну там спарк кода нет
источник
2021 March 31

D

Dmitry in Moscow Spark
Коллеги, привет! Подскажите, а есть ли возможность запустить pyspark джобу через spark-submit, указав путь до скрипта относительно pwd будущего ярнового контейнера? Мы пробрасываем тарник-зипник в джобу и хотим использовать файлик из этого же архива в качестве ентрипойнта

Сейчас нужно либо
1) писать скрипт-враппер, либо
2) распаковывать архив перед спарк самбитом (если сразу достать нельзя), доставать файлик оттуда и пробрасывать его как это делается обычно
источник

ПФ

Паша Финкельштейн... in Moscow Spark
Dmitry
Коллеги, привет! Подскажите, а есть ли возможность запустить pyspark джобу через spark-submit, указав путь до скрипта относительно pwd будущего ярнового контейнера? Мы пробрасываем тарник-зипник в джобу и хотим использовать файлик из этого же архива в качестве ентрипойнта

Сейчас нужно либо
1) писать скрипт-враппер, либо
2) распаковывать архив перед спарк самбитом (если сразу достать нельзя), доставать файлик оттуда и пробрасывать его как это делается обычно
Можно файл отправлять как base64 аргумент софтины ещё
источник

D

Datamove in Moscow Spark
Привет, спарщики!
Скажите, пож, а что сейчас :sota: для преобразования колонки датафрейма с массивом в обычные колонки? Т.е. имеется колонка features, в ней массив, а надо датафрейм с колонками на каждую фичу, необязательно именованные.
Задача со звездочкой: если там не просто массивы а спарс-векторы?
Я нашел что-то такое на скале, и могу видимо сделать и на pyspark нечто подобное, но может есть чего получше?
val numCols = df
 .withColumn("letters_size", size($"letters"))
 .agg(max($"letters_size"))
 .head()
 .getInt(0)

df
 .select(
   (0 until numCols).map(i => $"letters".getItem(i).as(s"col$i")): _*
 )
 .show()
источник

ЕГ

Евгений Глотов... in Moscow Spark
Datamove
Привет, спарщики!
Скажите, пож, а что сейчас :sota: для преобразования колонки датафрейма с массивом в обычные колонки? Т.е. имеется колонка features, в ней массив, а надо датафрейм с колонками на каждую фичу, необязательно именованные.
Задача со звездочкой: если там не просто массивы а спарс-векторы?
Я нашел что-то такое на скале, и могу видимо сделать и на pyspark нечто подобное, но может есть чего получше?
val numCols = df
 .withColumn("letters_size", size($"letters"))
 .agg(max($"letters_size"))
 .head()
 .getInt(0)

df
 .select(
   (0 until numCols).map(i => $"letters".getItem(i).as(s"col$i")): _*
 )
 .show()
Получше ничего нет, к сожалению
источник

АА

Артем Анистратов... in Moscow Spark
У меня есть такая реализация рекурсивная.

def flattenDataframe(df: DataFrame): DataFrame = {

   val fields = df.schema.fields
   val fieldNames = fields.map(x => x.name.replaceAll("\\S+\\s+\\S+", "_").replaceAll("__", "_"))


   fields.foreach(field => {
     val fieldtype = field.dataType
     val fieldName = field.name.replaceAll("\\S+\\s+\\S+", "_").replaceAll("__", "_")
     fieldtype match {
       case arrayType: ArrayType =>
         val fieldNamesExcludingArray = fieldNames.filter(_ != fieldName)
         val fieldNamesAndExplode = fieldNamesExcludingArray ++ Array(s"explode_outer($fieldName) as $fieldName")
         val explodedDf = df.selectExpr(fieldNamesAndExplode: _*)
         return flattenDataframe(explodedDf)
источник

D

Datamove in Moscow Spark
ок, спасибо!
источник

D

Datamove in Moscow Spark
тогда еще связанный вопрос. Может кто-то использовал mlflow.pyfunc.spark_udf - для инференса на спарке модели, которая определена на питон, и которой требуется пандас-датафрейм.
Что вы делаете, если у вас есть в спарке колонка features с массивом, а требуется передать в spark_udf обычный датафрейм с колонками.
1) преобразовывать features в колонки на спарке
2) отдавать колонку features как есть, делать sklearn pipeline и в ней уже преобразовывать данные для для sklearn-модели
источник