У меня есть внешняя таблица улья, которая разделена по дате и времени ее вставки, например, 20200331_0505
в формате YYYYMMDD_HHMM
.
В настоящее время существует только один раздел:
> hdfs dfs -ls /path/to/external/table
-rw-r----- 2020-03-31 05:06 /path/to/external/table/_SUCCESS
drwxr-x--- 2020-03-31 05:06 /path/to/external/table/loaddate=20200331_0505
И если я выполню запрос улья, чтобы найти разделы:
select distinct loaddate from table;
+----------------+
| loaddate |
+----------------+
| 20200331_0505 |
+----------------+
Что ожидается и чего я хочу чтобы увидеть, но если я запускаю это:
select * from table where loaddate=(select max(loaddate) from table);
Тогда я получаю эту ошибку:
ERROR : FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask. Vertex failed, vertexName=Map 3, vertexId=vertex_1585179445264_14095_4_00, diagnostics=[Vertex vertex_1585179445264_14095_4_00 [Map 3] killed/failed due to:ROOT_INPUT_INIT_FAILURE, Vertex Input: <Table> initializer failed, vertex=vertex_1585179445264_14095_4_00 [Map 3], java.lang.RuntimeException: ORC split generation failed with exception: java.io.FileNotFoundException: File hdfs://path/to/external/table/loaddate=20200327_0513 does not exist.
at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat.generateSplitsInfo(OrcInputFormat.java:1851)
at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat.getSplits(OrcInputFormat.java:1939)
at org.apache.hadoop.hive.ql.io.HiveInputFormat.addSplitsForGroup(HiveInputFormat.java:524)
at org.apache.hadoop.hive.ql.io.HiveInputFormat.getSplits(HiveInputFormat.java:779)
at org.apache.hadoop.hive.ql.exec.tez.HiveSplitGenerator.initialize(HiveSplitGenerator.java:243)
Итак, он пытается загрузить раздел, который не существует, 20200327_0513
, что может быть причиной этого?