AM
Size: a a a
AM
AM
AA
+--------------------+------+------+
| 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
AA
AA
OI
PK
OI
PK
OI
AA
+--------------------+------+------+
| 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|
+--------------------+------+------+
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
AA
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
local[*]
и зайти в интерфейсик спарка на вкладку с executors, то там будет всё равно один драйвер.AM
PK
AM
AS
AM