Как сделать так, чтобы функция SparkSQL Window не сбрасывала секунды на метку времени? - PullRequest
0 голосов
/ 01 мая 2018

У меня есть Spark Data Frame, несколько столбцов 2 из которых называются записанные_ц и тс. Зарегистрированные значения - это строковое представление значения даты и времени (в формате 20180101101125), а ts - истинная временная метка.

Когда я распечатываю содержимое фрейма данных, между значениями в записи_тс и тс встречается взаимно-однозначное соответствие.

Затем я вычисляю среднее для столбца, используя следующее

meanDF = pv \
         .groupBy("p_id", "u_id", "r_id", "b_id", window("ts", "15 minutes", "1 minute")) \
         .agg(mean("value")) \
         .withColumnRenamed("avg(value)", "mean_15")

meanDF.createOrReplaceTempView("my_stats")

upsertDF = spark.sql("select p_id, u_id, r_id, b_id, \
            date_format(window['start'], 'yyyyMMddHHmmss') as recorded_dtm, mean_15 \
           from my_stats ")


 aggRows = upsertDF.collect()
 for aggRow in aggRows:
     logger.info(aggRow)

К сожалению, значения для записанного_дмпа падают в секундах и печатаются как 20180101101100 вместо 20180101101125

Я пытался заменить 15 минут на 900 секунд и 1 минуту на 60 секунд, но это не имеет значения.

Как сохранить также секунды из столбца отметки времени?

1 Ответ

0 голосов
/ 01 мая 2018

Это мое неправильное понимание оконной функции. window ['start'] представляет время начала окна. Есть соответствующее окно ['end'], которое представляет время окончания окна, в котором вычисляется совокупность.

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