#hdfs #oci-hdfs-connector
Вопрос:
Я попытался создать внешнюю таблицу Hive для хранения объектов OCI, но не смог выполнить поиск данных в таблице разделов hive. В запросе нет выходных select * from table_name limit 10;
данных, это проблема только с таблицей разделов улья. Для обычной таблицы без разделов она работает так, как ожидалось.
Ответ №1:
Пожалуйста, следуйте документации здесь, используя разъем HDFS с Spark, чтобы понять предварительные условия. В дополнение к этому способ загрузки данных в секционированные таблицы отличается от обычной несекционированной таблицы. Существует небольшая ручная работа по упоминанию данных раздела, которую можно выполнить, выполнив следующий запрос
ЗАГРУЗИТЕ ДАННЫЕ ПО ПУТИ {местоположение} В ТАБЛИЦУ {таблица разделов} РАЗДЕЛ {имя=значение}
Чтобы лучше понять это, давайте рассмотрим пример файла movies.csv, загруженного в хранилище объектов из приведенной выше документации. (Вы можете выполнить действия, аналогичные описанным ниже, чтобы устранить проблему)
Шаг 1. Создайте внешнюю таблицу hive
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 * from table_name limit 10;
Синтаксис для просмотра таблиц и разделов
show tables;
show paritions table_name;