This is an automated email from the ASF dual-hosted git repository.
ahmedabu98 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 849fcf89c81 [Beam SQL Shell] Add Iceberg deps when using icebergio
(#38994)
849fcf89c81 is described below
commit 849fcf89c81e7b8ac2ccdf8e3596d35993ff33ab
Author: Ahmed Abualsaud <[email protected]>
AuthorDate: Wed Jun 17 17:45:08 2026 -0400
[Beam SQL Shell] Add Iceberg deps when using icebergio (#38994)
* add iceberg sql dep when using icebergio
* add maven snapshot repo
---
scripts/beam-sql.sh | 73 ++++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 67 insertions(+), 6 deletions(-)
diff --git a/scripts/beam-sql.sh b/scripts/beam-sql.sh
index c9ec365b99b..9df48f6c18d 100755
--- a/scripts/beam-sql.sh
+++ b/scripts/beam-sql.sh
@@ -36,6 +36,8 @@
MAVEN_DISTRIBUTION_URL="https://repo.maven.apache.org/maven2/org/apache/maven/ap
# Maven Plugin Configuration
MAVEN_SHADE_PLUGIN_VERSION="3.5.1"
+ICEBERG_VERSION="${ICEBERG_VERSION:-1.10.0}"
+APACHE_SNAPSHOT_REPOSITORY_URL="https://repository.apache.org/content/repositories/snapshots/"
mkdir -p "${CACHE_DIR}"
# Create a temporary directory for our Maven project.
@@ -84,6 +86,38 @@ function setup_maven_wrapper() {
MAVEN_CMD="${mvnw_script}"
}
+function add_beam_dependency() {
+ local artifact_id="$1"
+ cat >> "${POM_FILE}" << EOL
+ <dependency>
+ <groupId>org.apache.beam</groupId>
+ <artifactId>${artifact_id}</artifactId>
+ <version>\${beam.version}</version>
+ </dependency>
+EOL
+}
+
+function add_dependency() {
+ local group_id="$1"
+ local artifact_id="$2"
+ local version="$3"
+ cat >> "${POM_FILE}" << EOL
+ <dependency>
+ <groupId>${group_id}</groupId>
+ <artifactId>${artifact_id}</artifactId>
+ <version>${version}</version>
+ </dependency>
+EOL
+}
+
+function normalize_beam_version() {
+ case "${BEAM_VERSION}" in
+ *-[sS][nN][aA][pP][sS][hH][oO][tT])
+ BEAM_VERSION="${BEAM_VERSION%-*}-SNAPSHOT"
+ ;;
+ esac
+}
+
function usage() {
echo "Usage: $0 [--version <beam_version>] [--runner <runner_name>] [--io
<io_connector>] [--list-versions] [--list-ios] [--list-runners] [--debug]
[-h|--help]"
echo ""
@@ -91,6 +125,7 @@ function usage() {
echo ""
echo "Options:"
echo " --version Specify the Apache Beam version (default:
${DEFAULT_BEAM_VERSION})."
+ echo " SNAPSHOT versions are resolved from Apache's Maven
snapshot repository."
echo " --runner Specify the Beam runner to use (default: direct)."
echo " Supported runners:"
echo " direct - DirectRunner (runs locally, good for
development)"
@@ -208,7 +243,7 @@ function list_runners() {
echo "✅ Available runners for Beam ${BEAM_VERSION}:"
echo ""
-
+
# Process each runner and provide descriptions
while IFS= read -r runner; do
case "$runner" in
@@ -217,7 +252,7 @@ function list_runners() {
echo " Runs locally on your machine. Good for
development and testing."
;;
"google-cloud-dataflow-java")
- echo " dataflow - DataflowRunner"
+ echo " dataflow - DataflowRunner"
echo " Runs on Google Cloud Dataflow for
production workloads."
;;
flink-*)
@@ -273,7 +308,7 @@ function list_runners() {
;;
esac
done <<< "$runners"
-
+
echo ""
echo "💡 Usage: ./beam-sql.sh --runner <runner_name>"
echo " Default: direct"
@@ -291,7 +326,7 @@ DEBUG_MODE=false
while [[ "$#" -gt 0 ]]; do
case $1 in
- --version) BEAM_VERSION="$2"; shift ;;
+ --version) BEAM_VERSION="$2"; normalize_beam_version; shift ;;
--runner) BEAM_RUNNER=$(echo "$2" | tr '[:upper:]' '[:lower:]'); shift ;;
--io) IO_CONNECTORS+=("$2"); shift ;;
--list-versions) list_versions; exit 0 ;;
@@ -363,7 +398,15 @@ else
EOL
# Add IO and Runner dependencies
for io in "${IO_CONNECTORS[@]}"; do
- echo "
<dependency><groupId>org.apache.beam</groupId><artifactId>beam-sdks-java-io-${io}</artifactId><version>\${beam.version}</version></dependency>"
>> "${POM_FILE}"
+ add_beam_dependency "beam-sdks-java-io-${io}"
+ case "${io}" in
+ iceberg)
+ add_beam_dependency "beam-sdks-java-extensions-sql-iceberg"
+ add_dependency "org.apache.iceberg" "iceberg-aws" "${ICEBERG_VERSION}"
+ add_dependency "org.apache.iceberg" "iceberg-aws-bundle"
"${ICEBERG_VERSION}"
+ add_dependency "org.apache.iceberg" "iceberg-gcp" "${ICEBERG_VERSION}"
+ ;;
+ esac
done
RUNNER_ARTIFACT=""
case "${BEAM_RUNNER}" in
@@ -372,12 +415,25 @@ EOL
*) echo "❌ Error: Unsupported runner '${BEAM_RUNNER}'." >&2; exit 1 ;;
esac
if [ -n "${RUNNER_ARTIFACT}" ]; then
- echo "
<dependency><groupId>org.apache.beam</groupId><artifactId>${RUNNER_ARTIFACT}</artifactId><version>\${beam.version}</version></dependency>"
>> "${POM_FILE}"
+ add_beam_dependency "${RUNNER_ARTIFACT}"
fi
# Complete the POM with the build section for the maven-shade-plugin
cat >> "${POM_FILE}" << EOL
</dependencies>
+ <repositories>
+ <repository>
+ <id>apache.snapshots</id>
+ <url>${APACHE_SNAPSHOT_REPOSITORY_URL}</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ <updatePolicy>always</updatePolicy>
+ </snapshots>
+ </repository>
+ </repositories>
<properties>
<beam.version>${BEAM_VERSION}</beam.version>
</properties>
@@ -395,6 +451,11 @@ cat >> "${POM_FILE}" << EOL
</goals>
<configuration>
<transformers>
+ <transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+ <manifestEntries>
+ <Multi-Release>true</Multi-Release>
+ </manifestEntries>
+ </transformer>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
</transformers>
<filters>