Druid: нет столбца с меткой времени с типом локального часового пояса в результате запроса; один столбец должен иметь временную метку с типом локального часового пояса

#hive #druid

#улей #друид

Вопрос:

Я пытаюсь создать таблицу druid на основе существующей таблицы druid, используя приведенный ниже запрос, для которого я столкнулся с ошибкой.

запрос :

 CREATE TABLE IF NOT EXISTS database.druid_table2 STORED BY 
     'org.apache.hadoop.hive.druid.DruidStorageHandler' AS SELECT '__time' as `__time`,column1, column2, column3 FROM database.druid_table1; 
  

ошибка :

 org.apache.hive.service.cli.HiveSQLException: Error while compiling statement: FAILED: 
    SemanticException No column with timestamp with local time-zone type on query resu< one column 
    should be of timestamp with local time-zone type
    at org.apache.hive.jdbc.Utils.verifySuccess(Utils.java:300)
    at org.apache.hive.jdbc.Utils.verifySuccessWithInfo(Utils.java:286)
    at org.apache.hive.jdbc.HiveStatement.runAsyncOnServer(HiveStatement.java:324)
    at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:26`enter code here`5)
    at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:291)
    at org.apache.commons.dbcp2.DelegatingStatement.execute(DelegatingStatement.java:291)
    at org.apache.zeppelin.jdbc.JDBCInterpreter.executeSql(JDBCInterpreter.java:718)
    at org.apache.zeppelin.jdbc.JDBCInterpreter.interpret(JDBCInterpreter.java:801)
    at org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java:103)
    at 
org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer$InterpretJob.jobRun(RemoteInterpreterServer.java:633)
    at org.apache.zeppelin.scheduler.Job.run(Job.java:188)
    at org.apache.zeppelin.scheduler.ParallelScheduler$JobRunner.run(ParallelScheduler.java:162)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
  

ПРИМЕЧАНИЕ: я использую интерактивный режим Hive, поскольку это запрос, связанный с druid, а версия Hadoop — 3.2.x.

Ответ №1:

Я не знаком с этим методом или синтаксисом, но, судя по ошибке, он работает для других случаев? Если это так, возможно, вам нужно преобразовать __time в формат, указывающий часовой пояс? Я не уверен, как это передается.