-
Notifications
You must be signed in to change notification settings - Fork 3
/
Makefile
117 lines (102 loc) · 3.27 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
GREEN=\033[0;32m
NC=\033[0m # No Color
base: create tables import info
schema:
docker run \
-v ${PWD}/table/pinot/movie.sample.json:/sample.json \
-v ${PWD}/table:/table \
apachepinot/pinot:latest JsonToPinotSchema \
-jsonFile /sample.json \
-pinotSchemaName="movie" \
-outputDir="/table" \
-dimensions=""
create:
# docker compose build --no-cache
docker compose up -d
@echo "------------------------------------------------"
@echo "\n⏳ Waiting for Pinot Controller to be ready..."
@while true; do \
STATUS_CODE=$$(curl -s -o /dev/null -w '%{http_code}' \
'http://localhost:9000/health'); \
if [ "$$STATUS_CODE" -eq 200 ]; then \
break; \
fi; \
sleep 2; \
echo "Waiting for Pinot Controller..."; \
done
@printf "$(GREEN)✔$(NC) 🍷🕺 Pinot Controller is ready!\n"
@echo "\n⏳ Waiting for Pinot Broker to be ready..."
@while true; do \
STATUS_CODE=$$(curl -s -o /dev/null -w '%{http_code}' \
'http://localhost:8099/health'); \
if [ "$$STATUS_CODE" -eq 200 ]; then \
break; \
fi; \
sleep 1; \
echo "Waiting for Pinot Broker..."; \
done
@printf "$(GREEN)✔$(NC) 🍷💁 Pinot Broker is ready to receive queries!\n"
@echo "\n⏳ Waiting for Pinot Server to be ready..."
@while true; do \
STATUS_CODE=$$(curl -s -o /dev/null -w '%{http_code}' \
'http://localhost:8097/health/readiness'); \
if [ "$$STATUS_CODE" -eq 200 ]; then \
break; \
fi; \
sleep 1; \
echo "Waiting for Pinot Server..."; \
done
@printf "$(GREEN)✔$(NC) 🍷👩🔧 Pinot Server is ready to receive requests!\n"
@echo "\n⏳ Waiting for Kafka to be ready..."
@while ! nc -z localhost 9092; do \
sleep 1; \
echo "Waiting for Kafka..."; \
done
@printf "$(GREEN)✔$(NC) 🪲 Kafka is ready!\n"
topic:
docker exec kafka kafka-topics.sh \
--bootstrap-server localhost:9092 \
--create \
--topic movie_ratings
tables:
@echo "\n 🎥 Creating movies table..."
@docker exec pinot-controller ./bin/pinot-admin.sh \
AddTable \
-tableConfigFile /tmp/pinot/table/movies.table.json \
-schemaFile /tmp/pinot/table/movies.schema.json \
-exec
@echo "\n 🍿 Creating ratings table..."
@docker exec pinot-controller ./bin/pinot-admin.sh \
AddTable \
-tableConfigFile /tmp/pinot/table/ratings.table.json \
-schemaFile /tmp/pinot/table/ratings.schema.json \
-exec
import:
@docker exec pinot-controller ./bin/pinot-admin.sh \
LaunchDataIngestionJob \
-jobSpecFile /tmp/pinot/table/jobspec.yaml
validate:
@echo "\n🍷 Getting cluster info..."
@curl -sX GET http://localhost:9000/cluster/info -H 'accept: application/json' | jq .
@echo "\n🍷 Getting Schemas..."
@SCHEMAS=$$(curl -sX 'GET' \
'http://localhost:9000/schemas' \
-H 'accept: application/json' | jq .); \
if echo "$$SCHEMAS" | grep -q "movie_ratings"; then \
echo "Schema 'movie_ratings' found."; \
else \
echo "Schema 'movie_ratings' not found."; \
exit 1; \
fi; \
if echo "$$SCHEMAS" | grep -q "movies"; then \
echo "Schema 'movies' found."; \
else \
echo "Schema 'movies' not found."; \
exit 1; \
fi
info:
@printf "\n==========================================================\n"
@printf "🍷 Pinot Query UI - \033[4mhttp://localhost:9000\033[0m\n"
@printf "==========================================================\n"
destroy:
docker compose down -v