Другие часто задаваемые вопросы
Эта тема содержит ответы на некоторые общие вопросы.
Занимают ли VARCHAR (32) и STRING одинаковое место в хранилище?
Оба типа данных имеют переменную длину. При хранении данных одинаковой длины VARCHAR (32) и STRING занимают одинаковое место в хранилище.
Одинаково ли работают VARCHAR (32) и STRING при запросах данных?
Да.
Почему TXT файлы, импортированные из Oracle, по-прежнему отображаются с искаженными символами после установки кодировки UTF-8?
Для решения этой проблемы выполните следующие шаги:
-
Например, есть файл с именем original, текст которого искажен. Кодировка этого файла — ISO-8859-1. Выполните следующий код, чтобы получить кодировку файла.
file --mime-encoding origin.txt
origin.txt: iso-8859-1 -
Выполните команду
iconv, чтобы преобразовать кодировку этого файла в UTF-8.iconv -f iso-8859-1 -t utf-8 origin.txt > origin_utf-8.txt -
После преобразования текст этого файла по-прежнему отображается с искаженными символами. Вы можете затем переопределить кодировку этого файла как GBK и снова преобразовать кодировку в UTF-8.
iconv -f gbk -t utf-8 origin.txt > origin_utf-8.txt
Одинакова ли длина STRING, определенная в MySQL, с той, что определена в Selena?
Для VARCHAR(n) Selena определяет "n" в байтах, а MySQL определяет "n" в символах. Согласно UTF-8, один китайский символ равен трем байтам. Когда Selena и MySQL определяют "n" как одинаковое число, MySQL сохраняет в три раза больше символов, чем Selena.
Может ли тип данных полей разделения таблицы быть FLOAT, DOUBLE или DECIMAL?
Нет, поддерживаются только DATE, DATETIME и INT.
Как проверить место в хранилище, занимаемое данными в таблице?
Выполните оператор SHOW DATA, чтобы увидеть соответствующее место в хранилище. Вы также можете увидеть объем данных, количество копий и количество строк.
Примечание: В статистике данных есть временная задержка.
Как запросить увеличение квоты для базы данных Selena?
Чтобы запросить увеличение квоты, выполните следующий код:
ALTER DATABASE example_db SET DATA QUOTA 10T;
Поддерживает ли Selena обновление определенных полей в таблице путем выполнения оператора UPSERT?
Selena 2.2 и более поздние версии поддерживают обновление определенных полей в таблице с использованием таблицы Primary Key. Selena 1.9 и более поздние версии поддерживают обновление всех полей в таблице с использованием таблицы Primary Key. Для получения дополнительной информации см. Таблица Primary Key в Selena 2.2.
Как поменять местами данные между двумя таблицами или двумя разделами?
Выполните оператор SWAP WITH, чтобы поменять местами данные между двумя таблицами или двумя разделами. Оператор SWAP WITH более б езопасен, чем оператор INSERT OVERWRITE. Перед заменой данных сначала проверьте данные, а затем посмотрите, соответствуют ли данные после замены данным до замены.
-
Замена двух таблиц: Например, есть таблица с именем table 1. Если вы хотите заменить table 1 другой, выполните следующие шаги:
-
Создайте новую таблицу с именем table 2.
create table2 like table1; -
Используйте Stream Load, Broker Load или Insert Into для загрузки данных из table 1 в table 2.
-
Замените table 1 на table 2.
ALTER TABLE table1 SWAP WITH table2;Таким образом, данные точно загружаются в table 1.
-
-
Замена двух разделов: Например, есть таблица с именем table 1. Если вы хотите заменить данные раздела в table 1, выполните следующие шаги:
-
Создайте временный раздел.
ALTER TABLE table1
ADD TEMPORARY PARTITION tp1
VALUES LESS THAN("2020-02-01"); -
Загрузите данные раздела из table 1 во временный раздел.
-
Замените раздел table 1 временным разделом.
ALTER TABLE table1
REPLACE PARTITION (p1) WITH TEMPORARY PARTITION (tp1);
-
При перезапуске frontend (FE) возникает ошибка "error to open replicated environment, will exit"
Эта ошибка возникает из-за ошибки BDBJE. Для решения этой проблемы обновите версию BDBJE до 1.17 или более поздней.
При запросе данных из новой таблицы Apache Hive возникает ошибка "Broker list path exception"
Описание проблемы
msg:Broker list path exception
path=hdfs://172.31.3.136:9000/user/hive/warehouse/zltest.db/student_info/*, broker=TNetworkAddress(hostname:172.31.4.233, port:8000)
Решение
Обратитесь в техническую поддержку Selena и проверьте, правильны ли адрес и порт namenode, и есть ли у вас разрешение на доступ к адресу и порту namenode.
При запросе данных из новой таблицы Apache Hive возникает ошибка "get hive partition metadata failed"
Описание проблемы
msg:get hive partition meta data failed: java.net.UnknownHostException: emr-header-1.cluster-242
Решение
Убедитесь, что сеть подключ ена, и загрузите файл host на каждый backend (BE) в вашем кластере Selena.
При доступе к внешней таблице ORC в Apache Hive возникает ошибка "do_open failed. reason = Invalid ORC postscript length"
Описание проблемы
Метаданные Apache Hive кэшируются в FE. Но есть двухчасовая задержка для обновления метаданных в Selena. Перед тем как Selena завершит обновление, если вы вставите новые данные или обновите данные в таблице Apache Hive, данные в HDFS, сканируемые BE, и данные, полученные FE, будут отличаться. Поэтому возн икает эта ошибка.
MySQL [bdp_dim]> select * from dim_page_func_s limit 1;
ERROR 1064 (HY000): HdfsOrcScanner::do_open failed. reason = Invalid ORC postscript length
Решение
Для решения этой проблемы выполните одну из следующих операций:
- Обновите текущую версию до Selena 2.2 или более поздней.
- Вручную обновите таблицу Apache Hive. Для получения дополнительной информации см. Стратегия кэширования метаданных.