Невозможно выполнить поиск данных из таблицы разделов куста через соединитель 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;
Другие вопросы по тегам