From acd74129cd97f24c0dde9bf032a4048f2ce27b5f Mon Sep 17 00:00:00 2001 From: Vinoth Chandar Date: Thu, 30 May 2019 20:06:26 -0700 Subject: [PATCH] Create hoodie-utilities-bundle to host the shaded jar - hoodie-utilities can now be pulled in as compile time dependency - Lets users test their DeltaStreamer transformers for e.g - Tested the docker demo works & takes in the bundle - Doc changes to follow, to move DeltaStreamer commands to bundle jar --- docker/hoodie/hadoop/hive_base/pom.xml | 4 +- hoodie-utilities/pom.xml | 125 ----- packaging/hoodie-utilities-bundle/pom.xml | 461 ++++++++++++++++++ .../uber/hoodie/utilities/bundle/Main.java | 36 ++ pom.xml | 1 + 5 files changed, 501 insertions(+), 126 deletions(-) create mode 100644 packaging/hoodie-utilities-bundle/pom.xml create mode 100644 packaging/hoodie-utilities-bundle/src/main/java/com/uber/hoodie/utilities/bundle/Main.java diff --git a/docker/hoodie/hadoop/hive_base/pom.xml b/docker/hoodie/hadoop/hive_base/pom.xml index edf68ee7e..57199ad15 100644 --- a/docker/hoodie/hadoop/hive_base/pom.xml +++ b/docker/hoodie/hadoop/hive_base/pom.xml @@ -55,7 +55,9 @@ - + diff --git a/hoodie-utilities/pom.xml b/hoodie-utilities/pom.xml index b3218fa32..6fb720fd3 100644 --- a/hoodie-utilities/pom.xml +++ b/hoodie-utilities/pom.xml @@ -40,131 +40,6 @@ 1.8 - - org.apache.maven.plugins - maven-shade-plugin - 3.1.1 - - - package - - shade - - - ${project.build.directory}/dependency-reduced-pom.xml - - - - commons-codec:commons-codec - commons-dbcp:commons-dbcp - commons-pool:commons-pool - com.uber.hoodie:hoodie-common - com.uber.hoodie:hoodie-client - com.uber.hoodie:hoodie-spark - com.uber.hoodie:hoodie-hive - com.uber.hoodie:hoodie-hadoop-mr - com.uber.hoodie:hoodie-timeline-service - com.beust:jcommander - com.twitter:bijection-avro_2.11 - com.twitter:bijection-core_2.11 - org.apache.parquet:parquet-avro - com.twitter:parquet-avro - com.twitter.common:objectsize - io.confluent:kafka-avro-serializer - io.confluent:common-config - io.confluent:common-utils - io.confluent:kafka-schema-registry-client - io.dropwizard.metrics:metrics-core - io.dropwizard.metrics:metrics-graphite - org.apache.spark:spark-streaming-kafka-0-8_2.11 - org.apache.kafka:kafka_2.11 - com.101tec:zkclient - org.apache.kafka:kafka-clients - org.apache.hive:hive-common - org.apache.hive:hive-service - org.apache.hive:hive-metastore - org.apache.hive:hive-jdbc - com.esotericsoftware:kryo-shaded - org.objenesis:objenesis - com.esotericsoftware:minlog - com.yammer.metrics:metrics-core - - - - - com.beust.jcommander. - com.uber.hoodie.com.beust.jcommander. - - - org.apache.commons.dbcp. - com.uber.hoodie.org.apache.commons.dbcp. - - - org.apache.commons.pool. - com.uber.hoodie.org.apache.commons.pool. - - - org.apache.hive.jdbc. - com.uber.hoodie.org.apache.hive.jdbc. - - - org.apache.hadoop.hive.metastore. - com.uber.hoodie.org.apache.hadoop_hive.metastore. - - - org.apache.hive.common. - com.uber.hoodie.org.apache.hive.common. - - - org.apache.hadoop.hive.common. - com.uber.hoodie.org.apache.hadoop_hive.common. - - - org.apache.hadoop.hive.conf. - com.uber.hoodie.org.apache.hadoop_hive.conf. - - - org.apache.hive.service. - com.uber.hoodie.org.apache.hive.service. - - - org.apache.hadoop.hive.service. - com.uber.hoodie.org.apache.hadoop_hive.service. - - - com.esotericsoftware.kryo. - com.uber.hoodie.com.esotericsoftware.kryo. - - - org.objenesis. - com.uber.hoodie.org.objenesis. - - - com.esotericsoftware.minlog. - com.uber.hoodie.com.esotericsoftware.minlog. - - - com.codahale.metrics. - com.uber.hoodie.com.codahale.metrics. - - - org.apache.commons.codec. - com.uber.hoodie.org.apache.commons.codec. - - - - - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - - - - - diff --git a/packaging/hoodie-utilities-bundle/pom.xml b/packaging/hoodie-utilities-bundle/pom.xml new file mode 100644 index 000000000..a1ac2c039 --- /dev/null +++ b/packaging/hoodie-utilities-bundle/pom.xml @@ -0,0 +1,461 @@ + + + + + + hoodie + com.uber.hoodie + 0.4.8-SNAPSHOT + ../../pom.xml + + 4.0.0 + hoodie-utilities-bundle + jar + + + 1.2.17 + 4.10 + true + + + + + + org.jacoco + jacoco-maven-plugin + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-shade-plugin + 3.1.1 + + + package + + shade + + + ${project.build.directory}/dependency-reduced-pom.xml + + + + commons-codec:commons-codec + commons-dbcp:commons-dbcp + commons-pool:commons-pool + com.uber.hoodie:hoodie-common + com.uber.hoodie:hoodie-client + com.uber.hoodie:hoodie-utilities + com.uber.hoodie:hoodie-spark + com.uber.hoodie:hoodie-hive + com.uber.hoodie:hoodie-hadoop-mr + com.uber.hoodie:hoodie-timeline-service + com.beust:jcommander + com.twitter:bijection-avro_2.11 + com.twitter:bijection-core_2.11 + org.apache.parquet:parquet-avro + com.twitter:parquet-avro + com.twitter.common:objectsize + io.confluent:kafka-avro-serializer + io.confluent:common-config + io.confluent:common-utils + io.confluent:kafka-schema-registry-client + io.dropwizard.metrics:metrics-core + io.dropwizard.metrics:metrics-graphite + org.apache.spark:spark-streaming-kafka-0-8_2.11 + org.apache.kafka:kafka_2.11 + com.101tec:zkclient + org.apache.kafka:kafka-clients + org.apache.hive:hive-common + org.apache.hive:hive-service + org.apache.hive:hive-metastore + org.apache.hive:hive-jdbc + com.esotericsoftware:kryo-shaded + org.objenesis:objenesis + com.esotericsoftware:minlog + com.yammer.metrics:metrics-core + + + + + com.beust.jcommander. + com.uber.hoodie.com.beust.jcommander. + + + org.apache.commons.dbcp. + com.uber.hoodie.org.apache.commons.dbcp. + + + org.apache.commons.pool. + com.uber.hoodie.org.apache.commons.pool. + + + org.apache.hive.jdbc. + com.uber.hoodie.org.apache.hive.jdbc. + + + org.apache.hadoop.hive.metastore. + com.uber.hoodie.org.apache.hadoop_hive.metastore. + + + org.apache.hive.common. + com.uber.hoodie.org.apache.hive.common. + + + org.apache.hadoop.hive.common. + com.uber.hoodie.org.apache.hadoop_hive.common. + + + org.apache.hadoop.hive.conf. + com.uber.hoodie.org.apache.hadoop_hive.conf. + + + org.apache.hive.service. + com.uber.hoodie.org.apache.hive.service. + + + org.apache.hadoop.hive.service. + com.uber.hoodie.org.apache.hadoop_hive.service. + + + com.esotericsoftware.kryo. + com.uber.hoodie.com.esotericsoftware.kryo. + + + org.objenesis. + com.uber.hoodie.org.objenesis. + + + com.esotericsoftware.minlog. + com.uber.hoodie.com.esotericsoftware.minlog. + + + com.codahale.metrics. + com.uber.hoodie.com.codahale.metrics. + + + org.apache.commons.codec. + com.uber.hoodie.org.apache.commons.codec. + + + + + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + + + + + + src/main/resources + + + src/test/resources + + + + + + + confluent + http://packages.confluent.io/maven/ + + + + + + io.javalin + javalin + 2.4.0 + + + + io.dropwizard.metrics + metrics-core + + + + com.fasterxml.jackson.module + jackson-module-scala_2.11 + + + + com.uber.hoodie + hoodie-common + ${project.version} + + + + com.uber.hoodie + hoodie-common + ${project.version} + tests + test-jar + test + + + + com.uber.hoodie + hoodie-hive + ${project.version} + tests + test-jar + test + + + + com.uber.hoodie + hoodie-spark + ${project.version} + + + + org.apache.hadoop + hadoop-hdfs + tests + + + org.apache.hadoop + hadoop-common + tests + + + org.mortbay.jetty + * + + + javax.servlet.jsp + * + + + javax.servlet + * + + + + + + ${hive.groupid} + hive-exec + ${hive.version} + test + + + + ${hive.groupid} + hive-jdbc + ${hive.version} + standalone + + + org.slf4j + slf4j-api + + + javax.servlet + servlet-api + + + + + + com.uber.hoodie + hoodie-hive + ${project.version} + + + javax.servlet + servlet-api + + + + + + com.uber.hoodie + hoodie-client + ${project.version} + + + + com.uber.hoodie + hoodie-utilities + ${project.version} + + + + com.uber.hoodie + hoodie-client + ${project.version} + tests + test-jar + test + + + + commons-codec + commons-codec + + + commons-dbcp + commons-dbcp + + + commons-pool + commons-pool + + + + org.apache.httpcomponents + httpcore + + + + log4j + log4j + + + org.slf4j + slf4j-api + + + + org.apache.hadoop + hadoop-mapreduce-client-common + + + javax.servlet + servlet-api + + + + + + org.apache.hadoop + hadoop-client + + + + org.apache.spark + spark-core_2.11 + + + + org.apache.spark + spark-sql_2.11 + + + + com.yammer.metrics + metrics-core + 2.2.0 + + + + org.apache.spark + spark-streaming_2.11 + ${spark.version} + provided + + + + org.apache.spark + spark-streaming-kafka-0-8_2.11 + ${spark.version} + + + + + org.antlr + stringtemplate + 4.0.2 + + + + com.beust + jcommander + + + + org.mockito + mockito-all + 1.10.19 + test + + + org.apache.avro + avro-mapred + 1.7.7 + + + + org.apache.parquet + parquet-avro + + + + org.apache.parquet + parquet-hadoop + + + + com.twitter + bijection-avro_2.11 + 0.9.2 + + + + io.confluent + kafka-avro-serializer + 3.0.0 + + + + io.confluent + common-config + 3.0.0 + + + + io.confluent + common-utils + 3.0.0 + + + + io.confluent + kafka-schema-registry-client + 3.0.0 + + + + diff --git a/packaging/hoodie-utilities-bundle/src/main/java/com/uber/hoodie/utilities/bundle/Main.java b/packaging/hoodie-utilities-bundle/src/main/java/com/uber/hoodie/utilities/bundle/Main.java new file mode 100644 index 000000000..e1ed0707d --- /dev/null +++ b/packaging/hoodie-utilities-bundle/src/main/java/com/uber/hoodie/utilities/bundle/Main.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2019 Uber Technologies, Inc. (hoodie-dev-group@uber.com) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * + */ + +package com.uber.hoodie.utilities.bundle; + +import com.uber.hoodie.common.util.ReflectionUtils; + +/** + * A simple main class to dump all classes loaded in current classpath + * + * This is a workaround for generating sources and javadoc jars for packaging modules. The maven plugins for generating + * javadoc and sources plugins do not generate corresponding jars if there are no source files. + * + * This class does not have anything to do with Hudi but is there to keep mvn javadocs/source plugin happy. + */ +public class Main { + + public static void main(String[] args) { + ReflectionUtils.getTopLevelClassesInClasspath(Main.class).forEach(System.out::println); + } +} diff --git a/pom.xml b/pom.xml index 05d489561..1e9e01816 100644 --- a/pom.xml +++ b/pom.xml @@ -41,6 +41,7 @@ packaging/hoodie-hive-bundle packaging/hoodie-spark-bundle packaging/hoodie-presto-bundle + packaging/hoodie-utilities-bundle docker/hoodie/hadoop hoodie-integ-test