Skip to content

Commit 849fcf8

Browse files
authored
[Beam SQL Shell] Add Iceberg deps when using icebergio (#38994)
* add iceberg sql dep when using icebergio * add maven snapshot repo
1 parent 1d703fe commit 849fcf8

1 file changed

Lines changed: 67 additions & 6 deletions

File tree

scripts/beam-sql.sh

Lines changed: 67 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ MAVEN_DISTRIBUTION_URL="https://repo.maven.apache.org/maven2/org/apache/maven/ap
3636

3737
# Maven Plugin Configuration
3838
MAVEN_SHADE_PLUGIN_VERSION="3.5.1"
39+
ICEBERG_VERSION="${ICEBERG_VERSION:-1.10.0}"
40+
APACHE_SNAPSHOT_REPOSITORY_URL="https://repository.apache.org/content/repositories/snapshots/"
3941
mkdir -p "${CACHE_DIR}"
4042

4143
# Create a temporary directory for our Maven project.
@@ -84,13 +86,46 @@ function setup_maven_wrapper() {
8486
MAVEN_CMD="${mvnw_script}"
8587
}
8688

89+
function add_beam_dependency() {
90+
local artifact_id="$1"
91+
cat >> "${POM_FILE}" << EOL
92+
<dependency>
93+
<groupId>org.apache.beam</groupId>
94+
<artifactId>${artifact_id}</artifactId>
95+
<version>\${beam.version}</version>
96+
</dependency>
97+
EOL
98+
}
99+
100+
function add_dependency() {
101+
local group_id="$1"
102+
local artifact_id="$2"
103+
local version="$3"
104+
cat >> "${POM_FILE}" << EOL
105+
<dependency>
106+
<groupId>${group_id}</groupId>
107+
<artifactId>${artifact_id}</artifactId>
108+
<version>${version}</version>
109+
</dependency>
110+
EOL
111+
}
112+
113+
function normalize_beam_version() {
114+
case "${BEAM_VERSION}" in
115+
*-[sS][nN][aA][pP][sS][hH][oO][tT])
116+
BEAM_VERSION="${BEAM_VERSION%-*}-SNAPSHOT"
117+
;;
118+
esac
119+
}
120+
87121
function usage() {
88122
echo "Usage: $0 [--version <beam_version>] [--runner <runner_name>] [--io <io_connector>] [--list-versions] [--list-ios] [--list-runners] [--debug] [-h|--help]"
89123
echo ""
90124
echo "A self-contained launcher for the Apache Beam SQL Shell."
91125
echo ""
92126
echo "Options:"
93127
echo " --version Specify the Apache Beam version (default: ${DEFAULT_BEAM_VERSION})."
128+
echo " SNAPSHOT versions are resolved from Apache's Maven snapshot repository."
94129
echo " --runner Specify the Beam runner to use (default: direct)."
95130
echo " Supported runners:"
96131
echo " direct - DirectRunner (runs locally, good for development)"
@@ -208,7 +243,7 @@ function list_runners() {
208243

209244
echo "✅ Available runners for Beam ${BEAM_VERSION}:"
210245
echo ""
211-
246+
212247
# Process each runner and provide descriptions
213248
while IFS= read -r runner; do
214249
case "$runner" in
@@ -217,7 +252,7 @@ function list_runners() {
217252
echo " Runs locally on your machine. Good for development and testing."
218253
;;
219254
"google-cloud-dataflow-java")
220-
echo " dataflow - DataflowRunner"
255+
echo " dataflow - DataflowRunner"
221256
echo " Runs on Google Cloud Dataflow for production workloads."
222257
;;
223258
flink-*)
@@ -273,7 +308,7 @@ function list_runners() {
273308
;;
274309
esac
275310
done <<< "$runners"
276-
311+
277312
echo ""
278313
echo "💡 Usage: ./beam-sql.sh --runner <runner_name>"
279314
echo " Default: direct"
@@ -291,7 +326,7 @@ DEBUG_MODE=false
291326

292327
while [[ "$#" -gt 0 ]]; do
293328
case $1 in
294-
--version) BEAM_VERSION="$2"; shift ;;
329+
--version) BEAM_VERSION="$2"; normalize_beam_version; shift ;;
295330
--runner) BEAM_RUNNER=$(echo "$2" | tr '[:upper:]' '[:lower:]'); shift ;;
296331
--io) IO_CONNECTORS+=("$2"); shift ;;
297332
--list-versions) list_versions; exit 0 ;;
@@ -363,7 +398,15 @@ else
363398
EOL
364399
# Add IO and Runner dependencies
365400
for io in "${IO_CONNECTORS[@]}"; do
366-
echo " <dependency><groupId>org.apache.beam</groupId><artifactId>beam-sdks-java-io-${io}</artifactId><version>\${beam.version}</version></dependency>" >> "${POM_FILE}"
401+
add_beam_dependency "beam-sdks-java-io-${io}"
402+
case "${io}" in
403+
iceberg)
404+
add_beam_dependency "beam-sdks-java-extensions-sql-iceberg"
405+
add_dependency "org.apache.iceberg" "iceberg-aws" "${ICEBERG_VERSION}"
406+
add_dependency "org.apache.iceberg" "iceberg-aws-bundle" "${ICEBERG_VERSION}"
407+
add_dependency "org.apache.iceberg" "iceberg-gcp" "${ICEBERG_VERSION}"
408+
;;
409+
esac
367410
done
368411
RUNNER_ARTIFACT=""
369412
case "${BEAM_RUNNER}" in
@@ -372,12 +415,25 @@ EOL
372415
*) echo "❌ Error: Unsupported runner '${BEAM_RUNNER}'." >&2; exit 1 ;;
373416
esac
374417
if [ -n "${RUNNER_ARTIFACT}" ]; then
375-
echo " <dependency><groupId>org.apache.beam</groupId><artifactId>${RUNNER_ARTIFACT}</artifactId><version>\${beam.version}</version></dependency>" >> "${POM_FILE}"
418+
add_beam_dependency "${RUNNER_ARTIFACT}"
376419
fi
377420

378421
# Complete the POM with the build section for the maven-shade-plugin
379422
cat >> "${POM_FILE}" << EOL
380423
</dependencies>
424+
<repositories>
425+
<repository>
426+
<id>apache.snapshots</id>
427+
<url>${APACHE_SNAPSHOT_REPOSITORY_URL}</url>
428+
<releases>
429+
<enabled>false</enabled>
430+
</releases>
431+
<snapshots>
432+
<enabled>true</enabled>
433+
<updatePolicy>always</updatePolicy>
434+
</snapshots>
435+
</repository>
436+
</repositories>
381437
<properties>
382438
<beam.version>${BEAM_VERSION}</beam.version>
383439
</properties>
@@ -395,6 +451,11 @@ cat >> "${POM_FILE}" << EOL
395451
</goals>
396452
<configuration>
397453
<transformers>
454+
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
455+
<manifestEntries>
456+
<Multi-Release>true</Multi-Release>
457+
</manifestEntries>
458+
</transformer>
398459
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
399460
</transformers>
400461
<filters>

0 commit comments

Comments
 (0)