Я совершенно новичок в 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