Repository for dip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

148 lines
5.3 KiB

---
# ConfigMap for SQL Gateway Configuration
apiVersion: v1
kind: ConfigMap
metadata:
name: sql-gateway-config
namespace: {{ include "flink-sql-gateway.namespace" . }}
labels:
{{- include "flink-sql-gateway.labels" . | nindent 4 }}
{{- with .Values.global.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
data:
sql-gateway-defaults.yaml: |
# SQL Gateway Configuration
sql-gateway:
endpoint:
rest:
address: {{ .Values.sqlGateway.config.endpoint.rest.address }}
port: {{ .Values.sqlGateway.config.endpoint.rest.port }}
bind-address: {{ .Values.sqlGateway.config.endpoint.rest.bindAddress }}
session:
max-num: {{ .Values.sqlGateway.config.session.maxNum }}
idle-timeout: {{ .Values.sqlGateway.config.session.idleTimeout }}
check-interval: {{ .Values.sqlGateway.config.session.checkInterval }}
plan-cache:
enabled: {{ .Values.sqlGateway.config.session.planCache.enabled }}
max-size: {{ .Values.sqlGateway.config.session.planCache.maxSize }}
ttl: {{ .Values.sqlGateway.config.session.planCache.ttl }}
{{- if .Values.sqlClient.enabled }}
---
# ConfigMap with sample SQL scripts
apiVersion: v1
kind: ConfigMap
metadata:
name: sql-test-scripts
namespace: {{ include "flink-sql-gateway.namespace" . }}
labels:
{{- include "flink-sql-gateway.labels" . | nindent 4 }}
{{- with .Values.global.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
data:
01-create-tables.sql: |
-- Example SQL script for creating tables
-- This is a template - modify according to your data sources
-- Example: Create source table (replace with your connector)
CREATE TABLE source_table (
id STRING,
message STRING,
timestamp_field TIMESTAMP(3),
WATERMARK FOR timestamp_field AS timestamp_field - INTERVAL '5' SECOND
) WITH (
'connector' = 'your-connector', -- e.g., 'kafka', 'filesystem', etc.
-- Add your connector-specific properties here
'format' = 'json'
);
-- Example: Create sink table (replace with your connector)
CREATE TABLE sink_table (
id STRING,
processed_message STRING,
original_timestamp TIMESTAMP(3),
processing_time TIMESTAMP(3)
) WITH (
'connector' = 'your-connector', -- e.g., 'kafka', 'filesystem', etc.
-- Add your connector-specific properties here
'format' = 'json'
);
02-simple-query.sql: |
-- Simple filtering and transformation query
INSERT INTO sink_table
SELECT
id,
CONCAT('Processed: ', message) as processed_message,
timestamp_field as original_timestamp,
CURRENT_TIMESTAMP as processing_time
FROM source_table
WHERE LENGTH(message) > 5;
03-windowed-aggregation.sql: |
-- Windowed aggregation example
SELECT
TUMBLE_START(timestamp_field, INTERVAL '1' MINUTE) as window_start,
TUMBLE_END(timestamp_field, INTERVAL '1' MINUTE) as window_end,
COUNT(*) as message_count,
COUNT(DISTINCT id) as unique_ids
FROM source_table
GROUP BY TUMBLE(timestamp_field, INTERVAL '1' MINUTE);
test-data-generator.sql: |
-- Generate test data (for manual testing)
-- This would typically be done by external producer
-- Example JSON format for input data:
-- {"id": "msg001", "message": "Hello World", "timestamp_field": "2024-12-10T10:00:00.000Z"}
-- {"id": "msg002", "message": "Test Message", "timestamp_field": "2024-12-10T10:01:00.000Z"}
README.md: |
# Flink SQL Client Usage
## Connect to SQL Gateway with Remote Cluster
```bash
# Connect to SQL Gateway and specify remote cluster
kubectl exec -it {{ .Values.sqlClient.name }} -n {{ include "flink-sql-gateway.namespace" . }} -- /opt/flink/bin/sql-client.sh gateway \
--endpoint http://{{ .Values.sqlGateway.name }}:{{ .Values.sqlGateway.port }} \
-Dexecution.target=remote \
-Drest.address={{ .Values.sessionCluster.name }}-rest \
-Drest.port=8081
```
## Alternative: Set execution config in SQL
```bash
# Connect to SQL Gateway
kubectl exec -it {{ .Values.sqlClient.name }} -n {{ include "flink-sql-gateway.namespace" . }} -- /opt/flink/bin/sql-client.sh gateway --endpoint http://{{ .Values.sqlGateway.name }}:{{ .Values.sqlGateway.port }}
# Then in SQL Client, set execution config:
SET 'execution.target' = 'remote';
SET 'rest.address' = '{{ .Values.sessionCluster.name }}-rest';
SET 'rest.port' = '8081';
```
## Run SQL Scripts
```bash
# Inside the SQL Client container
kubectl exec -it {{ .Values.sqlClient.name }} -n {{ include "flink-sql-gateway.namespace" . }} -- bash
# View available scripts
ls /opt/sql-scripts/
# Execute SQL file with remote cluster config
/opt/flink/bin/sql-client.sh gateway \
--endpoint http://{{ .Values.sqlGateway.name }}:{{ .Values.sqlGateway.port }} \
-Dexecution.target=remote \
-Drest.address={{ .Values.sessionCluster.name }}-rest \
-Drest.port=8081 \
-f /opt/sql-scripts/01-create-tables.sql
```
## Test Data
Send JSON messages to your input source:
```json
{"id": "msg001", "message": "Hello World", "timestamp_field": "2024-12-10T10:00:00.000Z"}
```
{{- end }}