Size: a a a

2019 February 25

AM

Artem Muravlev in Moscow Spark
Для меня фактически важно "value"Hello world!"
источник

AM

Artem Muravlev in Moscow Spark
в едином екземпляре
источник
2019 February 26

AA

Anton Alekseev in Moscow Spark
Так я кажется опять что-то переусложняю. Подскажите как в таблице ниже для всех null значений, найти ближайшего родителя из колонки User для юзера из этой же колонки.
+--------------------+------+------+
|                User|   old|   new|
+--------------------+------+------+
|      A\04.01.2017\2|     2|     2|
|      A\04.01.2017\5|     2|     2|
|A\04.01.2017\Ques...|     2|     2|
|   A\04.01.2017\1234|     2|  null|
|A\04.01.2017\3\test1|  null|     2|
|A\19 january\3. П...|  null|131241|
|    A\04.01.2017\123|     2|  null|
|      A\04.01.2017\3|     2|     2|
|A\19 january\4. Н...|     2|     2|
|        A\66 january|     2|  null|
|A\04.01.2017\1\te...|    16|  null|
|A\19 january\1. О...|  null|131241|
|A\19 january\2. П...|    16|    16|
|        A\19 january|     2|     2|
|      A\04.01.2017\4|131241|131241|
|      A\04.01.2017\1|     2|     2|
+--------------------+------+------+
источник

AA

Anton Alekseev in Moscow Spark
Например для A\04.01.2017\3\test1 необходим родитель, и им будет A\04.01.2017\3
источник

AA

Anton Alekseev in Moscow Spark
В pandas я понимаю как это сделать, но необходимо в спарке да еще по хорошему и на партициях работать.
источник

AA

Anton Alekseev in Moscow Spark
Я пока вижу возможность только через коллект двух списков.
источник

OI

Oleg Ivchenko in Moscow Spark
Евгений Глотов
local[1] ?
А почему [1] ?

Если спарк запускается локально, то ему нужно на машине запустить и драйвера, и воркера. Я бы советовал [2] хотя бы.
источник

PK

Pavel Klemenkov in Moscow Spark
Oleg Ivchenko
А почему [1] ?

Если спарк запускается локально, то ему нужно на машине запустить и драйвера, и воркера. Я бы советовал [2] хотя бы.
В локал режиме это номинальное разделение, все равно все в тредпуле одного процесса считается
источник

OI

Oleg Ivchenko in Moscow Spark
Pavel Klemenkov
В локал режиме это номинальное разделение, все равно все в тредпуле одного процесса считается
Спасибо, не знал. В книге по spark тоже советовали > 2. Сейчас точную цитату не найду.
источник

PK

Pavel Klemenkov in Moscow Spark
Oleg Ivchenko
Спасибо, не знал. В книге по spark тоже советовали > 2. Сейчас точную цитату не найду.
Не, это логично, ибо чем больше ядер, тем быстрее считается. Просто при local[1] дебажить проще.
источник

OI

Oleg Ivchenko in Moscow Spark
Pavel Klemenkov
Не, это логично, ибо чем больше ядер, тем быстрее считается. Просто при local[1] дебажить проще.
У меня как-то было, что на 1 таска зависла. Насколько я понял потому, что не хватило проца на воркер.
источник

AA

Anton Alekseev in Moscow Spark
Anton Alekseev
Так я кажется опять что-то переусложняю. Подскажите как в таблице ниже для всех null значений, найти ближайшего родителя из колонки User для юзера из этой же колонки.
+--------------------+------+------+
|                User|   old|   new|
+--------------------+------+------+
|      A\04.01.2017\2|     2|     2|
|      A\04.01.2017\5|     2|     2|
|A\04.01.2017\Ques...|     2|     2|
|   A\04.01.2017\1234|     2|  null|
|A\04.01.2017\3\test1|  null|     2|
|A\19 january\3. П...|  null|131241|
|    A\04.01.2017\123|     2|  null|
|      A\04.01.2017\3|     2|     2|
|A\19 january\4. Н...|     2|     2|
|        A\66 january|     2|  null|
|A\04.01.2017\1\te...|    16|  null|
|A\19 january\1. О...|  null|131241|
|A\19 january\2. П...|    16|    16|
|        A\19 january|     2|     2|
|      A\04.01.2017\4|131241|131241|
|      A\04.01.2017\1|     2|     2|
+--------------------+------+------+
Пока так, вот только передача второй колонки как-то на передачу Row бы заменить.
def find_parent(col, value):
   return max([(len(i), i) if i in value and i != value else (0, "") for i in col])[1]

udf = fun.udf(find_parent, tp.StringType())

files.withColumn('old', when(col('old').isNull(), udf(col('User'), col('User'))).otherwise(col('old'))).show()
источник

AA

Anton Alekseev in Moscow Spark
Родитель может быть не за первым слешем, надо найти ближайшего родителя из этой же колонки. Для A\04.01.2017\3\test1 мы нашли A\04.01.2017\3 потому что он в колонке, но если бы был A\04.01.2017 и остутствовал A\04.01.2017\3 то он бы и стал родителем.
источник

AA

Anton Alekseev in Moscow Spark
Вообщем без коллекта не выходит, поправьте если можно проще.
def find_parent(col, value):
   col = col.split(', ')
   return max([(len(i), i) if i in value and i != value else (0, "") for i in col])[1]

udf = fun.udf(find_parent, tp.StringType())

lst = ', '.join([i['User'] for i in files.select('User').collect()])

files.withColumn('old', when(col('old').isNull(), udf(fun.lit(lst), col('User'))).otherwise(col('old')))
источник

DN

Dmitrii Nosov in Moscow Spark
Oleg Ivchenko
У меня как-то было, что на 1 таска зависла. Насколько я понял потому, что не хватило проца на воркер.
В локальном режиме _только_ драйвер. Если поставить хоть local[*] и зайти в интерфейсик спарка на вкладку с executors, то там будет всё равно один драйвер.
источник

AM

Artem Muravlev in Moscow Spark
Кто знает, можно ли создать shared variable типа boolean которая будет показывать стоит ли дальше делать трансформации, или закончить работу.
источник

PK

Pavel Klemenkov in Moscow Spark
Почему это нельзя просто условием сделать? Зачем общая переменная?
источник

AM

Artem Muravlev in Moscow Spark
Общим условием? У меня есть переменная типа boolean. В фазе мап мне нужно отслеживать изменения, если нет изменений в value, то я меняю эту переменную на true.

Может я не совсем правильно понимаю. Boolean у каждого воркера свой, и возможно такое что одни воркеры закончат работу, а вторые нет. А мне внутри необходимо делать шафл на редьюс фазе.
источник

AS

Andrey Smirnov in Moscow Spark
accumulator?
источник

AM

Artem Muravlev in Moscow Spark
Вот и я склоняюсь к нему. Я так понимаю изменять и доставать значения из него можно
источник