Я столкнулся с проблемой, когда при экспорте результатов с сервера куста 2 в файлы ORC отображаются некоторые имена столбцов по умолчанию (например, _col0, _col1, _col2) вместо исходных, созданных в кусте. Мы используем компоненты по умолчанию из HDP-2.6.3.0.
Мне также интересно, связана ли следующая проблема:
https://issues.apache.org/jira/browse/HIVE-4243
Ниже приведены шаги, которые мы предпринимаем:
Подключение:
export SPARK_HOME=/usr/hdp/current/spark2-client
beeline
!connect jdbc:hive2://HOST1:2181,HOST2:2181,HOST2:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2
Создание тестовой таблицы и вставка образцов значений:
create table test(str string);
insert into test values ('1');
insert into test values ('2');
insert into test values ('3');
Выполнение тестового запроса:
select * from test;
+-----------+--+
| test.str |
+-----------+--+
| 1 |
| 2 |
| 3 |
+-----------+--+
Экспорт в формате ORC:
insert overwrite directory 'hdfs://HOST1:8020/tmp/test' stored as orc select * from test;
Получение результатов:
hdfs dfs -get /tmp/test/000000_0 test.orc
Проверка результатов:
java -jar orc-tools-1.4.1-uber.jar data test.orc
Processing data file test.orc [length: 228]
{"_col0":"1"}
{"_col0":"2"}
{"_col0":"3"}
java -jar orc-tools-1.4.1-uber.jar meta test.orc
Processing data file test.orc [length: 228]
Structure for test.orc
File Version: 0.12 with HIVE_13083
Rows: 2
Compression: SNAPPY
Compression size: 262144
Type: struct<_col0:string>
Stripe Statistics:
Stripe 1:
Column 0: count: 2 hasNull: false
Column 1: count: 2 hasNull: false min: 1 max: 3 sum: 2
File Statistics:
Column 0: count: 2 hasNull: false
Column 1: count: 2 hasNull: false min: 1 max: 3 sum: 2
Stripes:
Stripe: offset: 3 data: 11 rows: 2 tail: 60 index: 39
Stream: column 0 section ROW_INDEX start: 3 length 11
Stream: column 1 section ROW_INDEX start: 14 length 28
Stream: column 1 section DATA start: 42 length 5
Stream: column 1 section LENGTH start: 47 length 6
Encoding column 0: DIRECT
Encoding column 1: DIRECT_V2
File length: 228 bytes
Padding length: 0 bytes
Padding ratio: 0%
Глядя на результаты, я вижу _col0 в качестве имени столбца, ожидая оригинального str.
Любые идеи о том, что мне не хватает?
Обновить
Заметил, что подключение от билайна идет на улей 1.x, а не 2.x как хотелось. Я изменил соединение с URL-адресом Hive Server 2 Interactive:
Connected to: Apache Hive (version 2.1.0.2.6.3.0-235)
Driver: Hive JDBC (version 1.21.2.2.6.3.0-235)
Transaction isolation: TRANSACTION_REPEATABLE_READ
И попробовал еще раз с тем же образцом. Он даже распечатывает схему правильно:
INFO : Returning Hive schema: Schema(fieldSchemas:[FieldSchema(name:test.str, type:string, comment:null)], properties:null)
Но до сих пор не повезло получить его в файле ORC.