Добавление данных в ClickHouse

Кратко:

  • Создание кластера ClickHouse с конфигурациями burstable, b3-c1-m4, 10 ГБ сетевого хранилища.
  • Загрузка данных о погоде в Москве и Санкт-Петербурге с рабочей станции.
  • Создание таблицы weather с полями LocalDateTime, LocalDate, Month, Day, TempC, Pressure, RelHumidity, WindSpeed10MinAvg, VisibilityKm, City.
  • Загрузка данных из файла в БД.
  • Запуск команды docker для проверки задания: docker run --rm cr.yandex/sol/edu-checker validate clickhouse.
  • Ввод параметров: <TOKEN>, <CLUSTER_HOST>, <DB_NAME>, <DB_USERNAME>, <DB_PASSWORD>.
  • Если проверка прошла успешно, скопировать ключ проверки и нажать кнопку Проверить.

К ClickHouse можно подключаться только с машины находящейся в том же кластере следовательно и проверку можно запускать только с неё для этого:

Создать машину и подключиться к ней по ssh:

ssh -l admin 88.165.156.65

Установить Docker на Ubuntu 24.04

sudo apt update

sudo apt upgrade
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt install docker-ce docker-ce-cli containerd.io
sudo docker run hello-world
sudo usermod -aG docker ${USER}

Перезапустить оболочку

id -nG

Подключиться к clickhouse 

Установите сертификат:

sudo mkdir --parents /usr/local/share/ca-certificates/Yandex && \
sudo wget "https://storage.yandexcloud.net/cloud-certs/RootCA.pem" \
   --output-document /usr/local/share/ca-certificates/Yandex/RootCA.crt && \
sudo wget "https://storage.yandexcloud.net/cloud-certs/IntermediateCA.pem" \
   --output-document /usr/local/share/ca-certificates/Yandex/IntermediateCA.crt && \
sudo chmod 655 \
   /usr/local/share/ca-certificates/Yandex/RootCA.crt \
   /usr/local/share/ca-certificates/Yandex/IntermediateCA.crt && \
sudo update-ca-certificates

Подключите DEB-репозиторий ClickHouse:

sudo apt update && sudo apt install --yes apt-transport-https ca-certificates dirmngr && \
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754 && \
echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee \
/etc/apt/sources.list.d/clickhouse.list

Установите зависимости:

sudo apt update && sudo apt install --yes clickhouse-client

Загрузите файл конфигурации для clickhouse-client:

mkdir --parents ~/.clickhouse-client && \
wget "https://storage.yandexcloud.net/doc-files/clickhouse-client.conf.example" \
  --output-document ~/.clickhouse-client/config.xml

Подключитесь к базе данных:

clickhouse-client --host rc1d-pt95llo56vdfpe56.mdb.yandexcloud.net \
                  --secure \
                  --user <username> \
                  --database <databasename> \
                  --port 9440 \
                  --ask-password

Для проверки успешности подключения выполните запрос:

SELECT version();

Перенесите скачанный файл на сетевую машину:

scp /home/administrator/weather_data.tsv Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript.:/home/admin/

Получите IAM токен:

yc iam create-token

С сетевой машины заполните таблицу в ClickHouse:

cat /home/admin/weather_data.tsv | clickhouse-client \
--host rc1d-pt94llo55vqfge89.mdb.yandexcloud.net \
--secure \
--user admin \
--database db1 \
--port 9440 \
-q "INSERT INTO db1.weather FORMAT TabSeparated" \
--ask-password

На сетевой машине запустите проверку:

sudo docker run --rm cr.yandex/sol/edu-checker validate clickhouse \
--token t1.9euelZrJy87IzsiLnI6SyJrMzpeXme3rnp......................................A \
--host rc1d-pt56lsd34vqfge56.mdb.yandexcloud.net \
--port 9440 \
--database db1 \
--username admin \
--password admin
Отлично! Вы успешно выполнили задание и можете перейти к следующему.