Невозможно выполнить поиск данных из таблицы разделов куста через соединитель OCI HDFS в объектное хранилище.
Я попытался создать внешнюю таблицу Hive в хранилище объектов OCI, но не могу выполнить поиск данных из таблицы разделов Hive. Нет вывода из запроса
select * from table_name limit 10;
Это проблема только с таблицей разделов улья. Для обычной таблицы без разделов это работает должным образом.
1 ответ
Пожалуйста, следуйте документации здесь Использование HDFS Connector со Spark, чтобы понять предварительные условия. В дополнение к этому способ загрузки данных в секционированные таблицы отличается от обычной несекционированной таблицы. Упоминание данных раздела требует небольшой ручной работы, которую можно сделать, выполнив следующий запрос
ЗАГРУЗИТЬ ДАННЫЕ INPATH {location} INTO TABLE {partitioned_table} PARTITION{name=value}
Чтобы лучше понять это, давайте рассмотрим пример файла movies.csv, загруженного в корзину объектного хранилища из приведенной выше документации. (Вы можете выполнить шаги, аналогичные описанным ниже, чтобы решить проблему)
Шаг 1. Создайте внешнюю таблицу улья
CREATE EXTERNAL TABLE movie_table(
movieId integer, title string, genres string)
partitioned by (pa_month string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'oci://bucket_name@namespace_name/moviepartition';
Шаг 2. Загрузите данные из файла, помещенного в корзину объектного хранилища, в секционированную таблицу.
LOAD DATA INPATH 'oci://bucket_name@namespace_name/movicepartition' INTO TABLE movie_table PARTITION {pa_month=202104};
Шаг 3. Выполните запрос SELECT, чтобы просмотреть содержимое таблицы.
select * from table_name limit 10;
Синтаксис для просмотра таблиц и разделов
show tables;
show paritions table_name;