TPCDS
Инструкция по созданию набора данных TPCDS на MacOS и Linux
Установка
- Клонировать репозиторий с GitHub,
- Установить зависимости для сборки.
- MacOS:
xcode-select --install
- Linux:
sudo apt-get install gcc make flex bison byacc git
- `sudo yum install gcc make flex bison byacc git
- MacOS:
cd tpcds-kit/tools
- Сборка
make OS=MACOS
make OS=LINUX
Версия gcc в Linux
Для того чтобы сборка прошла в Ubuntu 24.04 мне потребовалось установить более старую версию gcc
и её собрать с дополнительными ключами.
sudo apt install gcc-9
make CC=gcc-9 OS=LINUX
Генерация
./dsdgen -DIR /Users/maksim/tmp/data -SCALE 2 -VERBOSE Y
Где:
- директория уже должна быть создана
Параллельная генерация данных
Since dsdgen generates 200-300GB/hour serially on a 2-3GHz x86 processor, it is useful to run multiple parallel streams when generating large amounts of data.
Example:generating 1 GB with 4 parallel streams simultaneously
SCALE=1
TPCDS_DIR=/tmp/dsdgen/${SCALE}
mkdir -p ${TPCDS_DIR}
dsdgen -scale ${SCALE} -f -dir ${TPCDS_DIR} -parallel 4 -child 1 &
dsdgen -scale ${SCALE} -f -dir ${TPCDS_DIR} -parallel 4 -child 2 &
dsdgen -scale ${SCALE} -f -dir ${TPCDS_DIR} -parallel 4 -child 3 &
dsdgen -scale ${SCALE} -f -dir ${TPCDS_DIR} -parallel 4 -child 4 &
Загрузка данных
- Создать таблицы скриптом, что лежит в папке tools:
psql -h 10.73.152.23 -U tpcds -d tpcds -f tpcds.sql
- Выполнить скрипт ниже для загрузки данных:
for i in `ls *.dat`; do
table=${i/.dat/}
echo "Loading $table..."
sed 's/|$//' $i > /tmp/$i
psql -U tpcds -h 10.73.152.23 tpcds -q -c "TRUNCATE $table"
psql -U tpcds -h 10.73.152.23 tpcds -c "\\copy $table FROM '/tmp/$i' CSV DELIMITER '|'"
done
Генерация запросов
dsqgen \
-DIRECTORY ../query_templates \
-INPUT ../query_templates/templates.lst \
-VERBOSE Y \
-QUALIFY Y \
-SCALE 10000 \
-DIALECT netezza \
-OUTPUT_DIR /tmp