атрибут date_trunc не найден - PullRequest
       13

атрибут date_trunc не найден

0 голосов
/ 17 января 2019

Я создаю связующее задание, которое будет считывать информацию из s3, выполнять запрос и выводить результаты. Запускаемый запрос выглядит примерно так:

SELECT 
  date_trunc('hour', hourly_report.time) as hour, 
  sum(cost) as costs FROM table 
FROM hourly_report
GROUP BY 1

Я загрузил данные в DynamicFrame, создал DataFrame df и создал временное представление данных.

df.createTempView("hourly_report")

Затем я пытаюсь выполнить запрос в представлении

spark.sql("SELECT date_trunc('hour', hourly_report.time) as hour, sum(cost) as costs FROM table FROM hourly_report GROUP BY 1")

Это вызывает ошибку:

pyspark.sql.utils.AnalysisException: u"Undefined function: 'date_trunc'. This function is neither a registered temporary function nor a permanent function registered in the database 'default'.; line 1 pos 7"

Это казалось странным, но я попытался обойти это, используя udf для выполнения date_trunc вместо использования функции sql date_trunc:

import pyspark.sql.functions as sf
spark.udf.register("date_truncate", lambda x: sf.date_trunc('hour',x), TimestampType())
spark.sql("SELECT date_truncate(hourly_report.time) as hour, sum(cost) as costs FROM table FROM hourly_report GROUP BY 1")

Это вызывает другую ошибку:

AttributeError: 'module' object has no attribute 'date_trunc'

Как правильно выполнить операцию date_trunc над столбцом метки времени, я что-то не так делаю?

...