Hive Dyanami c Partitioning не может записать разделы в конечные подкаталоги - PullRequest
0 голосов
/ 11 марта 2020

Я все еще новичок в улье

У меня есть следующая таблица, загруженная данными

CREATE TABLE table1 (
  col1 string,
  col2 string,
  col3 float,
  col4 float)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

, и я хочу разделить ее на строку col1

CREATE TABLE table1_partition (
  col2 string,
  col3 float,
  col4 float)
PARTITIONED BY (col1 string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

Я получаю ошибки, когда запускаю следующее

INSERT INTO TABLE table1_partition PARTITION (col1)
SELECT col2, col3, col4, 
col1 FROM table1;

ОШИБКА

Total jobs = 3
Launching Job 1 out of 3
Number of reduce tasks is set to 0 since there's no reduce operator
Job running in-process (local Hadoop)
2020-03-11 05:23:22,584 Stage-1 map = 0%,  reduce = 0%
2020-03-11 05:24:22,944 Stage-1 map = 0%,  reduce = 0%
2020-03-11 05:25:23,122 Stage-1 map = 0%,  reduce = 0%
Ended Job = job_local441210382_0001 with errors
Error during job, obtaining debugging information...
Job Tracking URL: http://localhost:8080/
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
MapReduce Jobs Launched: 
Stage-Stage-1:  HDFS Read: 1858506752 HDFS Write: 1477771205 FAIL
Total MapReduce CPU Time Spent: 0 msec

Я просмотрел файл журнала, и кажется, что датододы, в которые следует записать, удаляются:

2020-03-11 05:47:01,916 INFO org.apache.hadoop.hdfs.server.datanode.DirectoryScanner: BlockPool BP-433273321-127.0.1.1-1583889697525 Total blocks: 14, missing metadata files:0, missing block files:0, missing blocks in memory:0, mismatched blocks:0

Я также заглянул в /tmp/hadoop-myuser/dfs/data/current/.../finalised/ согласно журналу, в subdir0 - subdir5 есть файлы, и некоторые из них пусты.

Пожалуйста, помогите мне разобраться в этой проблеме.

1 Ответ

0 голосов
/ 11 марта 2020

Установите hive.exec.dynamic.partition.mode в nostrict, например,

set hive.exec.dynamic.partition.mode=nostrict

перед выполнением запроса. По умолчанию улей работает в строгом режиме. Из руководства Hive

В строгом режиме пользователь должен указать хотя бы один раздел stati c на случай, если пользователь случайно перезаписывает все разделы, в нестрогом режиме все разделы могут быть динамическими c

...