Spark убивает задания при достижении функции фильтра, при запросе искры об ошибках исполнители поддерживаются только в грубом режиме - PullRequest
0 голосов
/ 04 ноября 2018

Я совершенно новичок в pyspark и застрял в проблеме. Я пытаюсь прочитать таблицу из улья и создать кадры данных с определенными атрибутами столбца report_d, который является bigint (каждая строка является массивом bigint)

[20171101,20180501,20180501,20180601] [20171001,20140901,20180501,20170901] [20180501,20180501,20180501] [20180601] [20171101,20180501,20180501,20180601] [20171001,20140901,20180501,20180501,20180501,20170901] [20171101,20180501,20180501,20180501, 20180501, 20180501,20180601] [20171001,20140901,20180501,20170901]

и я хочу найти количество месяцев между этим столбцом и датой, которая является целым числом. когда я пытаюсь использовать какую-нибудь функцию Python, я могу помочь любому?

sc = SparkContext("local", "monthDif") sqlContext= HiveContext(sc) df=sqlContext.sql("select report_d from hive_table where date = 20180930")

def monthDiff(df):
year = [int(val)/10000 for val in df]
month = [int(val % 10000)/100 for val in df]
day = [int(val)%100 for val in df]
yy = 2018
mm = 06
yyDif = [int(abs(val - yy)) for val in year]
mmDif = [int(val -mm) for val in month ]
countyytomm = [int(val) * 12 for val in yyDif]
return list(map(add,countyytomm, mmDif))
myudf = udf(monthDiff)
newdf = df.withColumn("monthDiff", myudf(df['report_d']))
filteredDf = newdf.filter(newdf['monthDiff']>24)`

Я использую вышеуказанный udf, но я получаю сообщение об ошибке, когда оно достигает фильтра. Кто-нибудь может помочь? Я использую Spark 1.6.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...