Перейти к основному содержимому

Другие часто задаваемые вопросы

Эта тема содержит ответы на некоторые общие вопросы.

Занимают ли VARCHAR (32) и STRING одинаковое место в хранилище?

Оба типа данных имеют переменную длину. При хранении данных одинаковой длины VARCHAR (32) и STRING занимают одинаковое место в хранилище.

Одинаково ли работают VARCHAR (32) и STRING при запросах данных?

Да.

Почему TXT файлы, импортированные из Oracle, по-прежнему отображаются с искаженными символами после установки кодировки UTF-8?

Для решения этой проблемы выполните следующие шаги:

  1. Например, есть файл с именем original, текст которого искажен. Кодировка этого файла — ISO-8859-1. Выполните следующий код, чтобы получить кодировку файла.

    file --mime-encoding origin.txt
    origin.txt: iso-8859-1
  2. Выполните команду iconv, чтобы преобразовать кодировку этого файла в UTF-8.

    iconv -f iso-8859-1 -t utf-8 origin.txt > origin_utf-8.txt
  3. После преобразования текст этого файла по-прежнему отображается с искаженными символами. Вы можете затем переопределить кодировку этого файла как 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 другой, выполните следующие шаги:

    1. Создайте новую таблицу с именем table 2.

      create table2 like table1;
    2. Используйте Stream Load, Broker Load или Insert Into для загрузки данных из table 1 в table 2.

    3. Замените table 1 на table 2.

      ALTER TABLE table1 SWAP WITH table2;

      Таким образом, данные точно загружаются в table 1.

  • Замена двух разделов: Например, есть таблица с именем table 1. Если вы хотите заменить данные раздела в table 1, выполните следующие шаги:

    1. Создайте временный раздел.

      ALTER TABLE table1

      ADD TEMPORARY PARTITION tp1

      VALUES LESS THAN("2020-02-01");
    2. Загрузите данные раздела из table 1 во временный раздел.

    3. Замените раздел 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

Решение

Для решения этой проблемы выполните одну из следующих операций:

При подключении внешних таблиц MySQL возникает ошибка "caching_sha2_password cannot be loaded"

Описание проблемы

Плагин аутентификации по умолчанию для MySQL 8.0 — caching_sha2_password. Плагин аутентификации по умолчанию для MySQL 5.7 — mysql_native_password. Эта ошибка возникает из-за использования неправильного плагина аутентификации.

Решение

Для решения этой проблемы выполните одну из следующих операций:

  • Подключитесь к Selena.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
  • Измените файл my.cnf.
vim my.cnf

[mysqld]

default_authentication_plugin=mysql_native_password

Как немедленно освободить дисковое пространство после удаления таблицы?

Если вы выполните оператор DROP TABLE для удаления таблицы, Selena потребуется некоторое время для освобождения выделенного дискового пространства. Чтобы немедленно освободить выделенное дисковое пространство, выполните оператор DROP TABLE FORCE для удаления таблицы. При выполнении оператора DROP TABLE FORCE Selena удаляет таблицу напрямую, не проверяя, есть ли в ней незавершенные события. Мы рекомендуем выполнять оператор DROP TABLE FORCE с осторожностью. Потому что после удаления таблицы вы не сможете ее восстановить.

Как посмотреть текущую версию Selena?

Выполните команду select current_version(); или CLI команду ./bin/show_fe_version.sh, чтобы посмотреть текущую версию.

Как установить размер памяти FE?

Метаданные хранятся в памяти, используемой FE. Вы можете установить размер памяти FE в соответствии с количеством tablet, как показано в таблице ниже. Например, если количество tablet меньше 1 миллиона, вы должны выделить минимум 16 ГБ памяти для FE. Вы можете настроить значения параметров -Xms и -Xmx в элементе конфигурации JAVA_OPTS в файле fe.conf, и значения параметров -Xms и -Xmx должны быть одинаковыми. Обратите внимание, что конфигурация должна быть одинаковой для всех FE, поскольку любой из FE может быть избран Leader.

Количество tabletРазмер памяти каждого FE
менее 1 миллиона16 ГБ
1 ~ 2 миллиона32 ГБ
2 ~ 5 миллионов64 ГБ
5 ~ 10 миллионов128 ГБ

Как Selena вычисляет время запроса?

Selena поддерживает запрос данных с использованием нескольких потоков. Время запроса относится к времени, используемому несколькими потоками для запроса данных.

Поддерживает ли Selena установку пути при локальном экспорте данных?

Нет.

Каковы верхние пределы параллелизма Selena?

Вы можете протестировать ограничения параллелизма на основе фактических бизнес-сценариев или смоделированных бизнес-сценариев. Согласно отзывам некоторых пользователей, можно достичь максимум 20 000 QPS или 30 000 QPS.

Почему производительность первого SSB теста Selena медленнее, чем во второй раз?

Скорость чтения дисков для первого запроса связана с производительностью дисков. После первого запроса для последующих запросов генерируется page cache, поэтому запрос выполняется быстрее, чем раньше.

Сколько BE нужно настроить как минимум для кластера?

Selena поддерживает развертывание на одном узле, поэтому вам нужно настроить как минимум один BE. BE должны работать с AVX2, поэтому мы рекомендуем развертывать BE на машинах с конфигурацией 8-ядерный и 16 ГБ или выше.

Как установить разрешения на данные при использовании Apache Superset для визуализации данных в Selena?

Вы можете создать новую учетную запись пользователя, а затем установить разрешения на данные, предоставив разрешения на запрос таблицы пользователю.

Почему profile не отображается после установки enable_profile в true?

Отчет отправляется только на leader FE для доступа.

Как проверить аннотации полей в таблицах Selena?

Выполните команду show create table xxx.

При создании таблицы как указать значение по умолчанию для функции NOW()?

Только Selena 2.1 или более поздняя версия поддерживает указание значения по умолчанию для функции. Для версий ранее Selena 2.1 вы можете указать только константу для функции.

Как освободить место в хранилище узлов BE?

Вы можете удалить каталог trash с помощью команды rm -rf. Если вы уже восстановили данные из snapshot, вы можете удалить каталог snapshot.

Можно ли добавить дополнительные диски к узлам BE?

Да. Вы можете добавить диски в каталог, указанный элементом конфигурации BE storage_root_path.

Как предотвратить конфликты разделов выражений, вызванные одновременным выполнением задач загрузки и задач создания разделов?

В настоящее время для таблиц со стратегией разделения выражений разделы, созданные во время задач загрузки, конфликтуют с теми, которые созданы во время задач ALTER TABLE. Поскольку задачи загрузки имеют приоритет, любые конфликтующие задачи ALTER завершатся неудачей. Чтобы предотвратить эту проблему, рассмотрите следующие обходные пути:

  • Если вы используете грубые разделы на основе времени (например, разделение по дням или месяцам), вы можете предотвратить пересечение операций ALTER с временными границами, снижая риск сбоев создания разделов.
  • Если вы используете детализированные разделы на основе времени (например, разделение по часам), вы можете вручную создать разделы для будущего временного диапазона, чтобы обеспечить, что операции ALTER не прерываются новыми разделами, созданными задачами загрузки. Вы можете использовать функцию EXPLAIN ANALYZE для запуска создания разделов путем выполнения оператора INSERT без фиксации транзакции. Это позволяет создать необходимые разделы без влияния на фактические данные. Следующий пример демонстрирует, как создать разделы на следующие 8 часов:
CREATE TABLE t(
event_time DATETIME
)
PARTITION BY date_trunc('hour', event_time);

EXPLAIN ANALYZE
INSERT INTO t (event_time)
SELECT DATE_ADD(NOW(), INTERVAL d hour)
FROM table(generate_series(0, 8)) AS g(d);

SHOW PARTITIONS FROM t;