This is an automated email from the ASF dual-hosted git repository.

stoty pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/phoenix-connectors.git


The following commit(s) were added to refs/heads/master by this push:
     new 5bd23ae  PHOENIX-6057 Create phoenix-connector for spark, kafka, pig, 
flume that works with Phoenix5
5bd23ae is described below

commit 5bd23ae2a0f70c3b3edf92a53780dafa643faf26
Author: Richard Antal <[email protected]>
AuthorDate: Mon Aug 3 15:49:37 2020 +0200

    PHOENIX-6057 Create phoenix-connector for spark, kafka, pig, flume that 
works with Phoenix5
---
 phoenix-flume-base/phoenix4-flume/pom.xml          |  43 ++
 phoenix-flume-base/phoenix5-flume/pom.xml          |  53 ++
 {phoenix-flume => phoenix-flume-base}/pom.xml      |  47 +-
 .../apache/phoenix/flume/CsvEventSerializerIT.java |   0
 .../phoenix/flume/JsonEventSerializerIT.java       |   0
 .../org/apache/phoenix/flume/PhoenixSinkIT.java    |  11 +-
 .../phoenix/flume/RegexEventSerializerIT.java      |   0
 .../phoenix/flume/serializer/CustomSerializer.java |   0
 .../apache/phoenix/flume/sink/NullPhoenixSink.java |   0
 .../apache/phoenix/flume/DefaultKeyGenerator.java  |   0
 .../org/apache/phoenix/flume/FlumeConstants.java   |   0
 .../org/apache/phoenix/flume/KeyGenerator.java     |   0
 .../org/apache/phoenix/flume/SchemaHandler.java    |   0
 .../flume/serializer/BaseEventSerializer.java      |   0
 .../flume/serializer/CsvEventSerializer.java       |   0
 .../phoenix/flume/serializer/EventSerializer.java  |   0
 .../phoenix/flume/serializer/EventSerializers.java |   0
 .../flume/serializer/JsonEventSerializer.java      |   0
 .../flume/serializer/RegexEventSerializer.java     |   0
 .../org/apache/phoenix/flume/sink/PhoenixSink.java |   0
 phoenix-hive/pom.xml                               |   2 +-
 phoenix-hive3/pom.xml                              |   2 +-
 phoenix-hive3/src/test/resources/tez-site.xml      |   2 +-
 phoenix-kafka-base/phoenix4-kafka/pom.xml          |  35 ++
 phoenix-kafka-base/phoenix5-kafka/pom.xml          |  80 +++
 {phoenix-kafka => phoenix-kafka-base}/pom.xml      |  79 ++-
 .../apache/phoenix/kafka/PhoenixConsumerIT.java    |   0
 .../src/it/resources/consumer.props                |   0
 .../src/it/resources/producer.props                |   0
 .../org/apache/phoenix/kafka/KafkaConstants.java   |   0
 .../phoenix/kafka/consumer/PhoenixConsumer.java    |   0
 .../kafka/consumer/PhoenixConsumerTool.java        |   0
 phoenix-pig-base/phoenix4-pig/pom.xml              |  35 ++
 phoenix-pig-base/phoenix5-pig/pom.xml              |  81 +++
 {phoenix-pig => phoenix-pig-base}/pom.xml          |  39 +-
 .../it/java/org/apache/phoenix/pig/BasePigIT.java  |   0
 .../apache/phoenix/pig/PhoenixHBaseLoaderIT.java   |   0
 .../apache/phoenix/pig/PhoenixHBaseStorerIT.java   |   0
 .../phoenix/pig/udf/ReserveNSequenceTestIT.java    |   0
 .../org/apache/phoenix/pig/PhoenixHBaseLoader.java |   7 +-
 .../apache/phoenix/pig/PhoenixHBaseStorage.java    |   0
 .../apache/phoenix/pig/udf/ReserveNSequence.java   |   0
 .../phoenix/pig/util/PhoenixPigSchemaUtil.java     |   0
 .../pig/util/QuerySchemaParserFunction.java        |   0
 .../pig/util/SqlQueryToColumnInfoFunction.java     |   0
 .../pig/util/TableSchemaParserFunction.java        |   0
 .../java/org/apache/phoenix/pig/util/TypeUtil.java |   0
 .../phoenix/pig/util/PhoenixPigSchemaUtilTest.java |   0
 .../pig/util/QuerySchemaParserFunctionTest.java    |   0
 .../pig/util/SqlQueryToColumnInfoFunctionTest.java |   0
 .../pig/util/TableSchemaParserFunctionTest.java    |   0
 .../org/apache/phoenix/pig/util/TypeUtilTest.java  |   0
 {phoenix-spark => phoenix-spark-base}/README.md    |   0
 phoenix-spark-base/phoenix4-spark/pom.xml          |  42 ++
 phoenix-spark-base/phoenix5-spark/pom.xml          |  74 +++
 phoenix-spark-base/pom.xml                         | 660 +++++++++++++++++++++
 .../java/org/apache/phoenix/spark/AggregateIT.java |   0
 .../java/org/apache/phoenix/spark/OrderByIT.java   |   8 +
 .../org/apache/phoenix/spark/SaltedTableIT.java    |   0
 .../java/org/apache/phoenix/spark/SparkUtil.java   |   0
 .../src/it/resources/globalSetup.sql               |   0
 .../src/it}/resources/log4j.xml                    |   0
 .../src/it/resources/tenantSetup.sql               |   0
 .../phoenix/spark/AbstractPhoenixSparkIT.scala     |   0
 .../org/apache/phoenix/spark/PhoenixSparkIT.scala  |   0
 .../spark/PhoenixSparkITTenantSpecific.scala       |   0
 .../org/apache/phoenix/spark/SparkResultSet.java   |   0
 .../spark/datasource/v2/PhoenixDataSource.java     |   0
 .../v2/reader/PhoenixDataSourceReadOptions.java    |   0
 .../v2/reader/PhoenixDataSourceReader.java         |   7 +-
 .../v2/reader/PhoenixInputPartition.java           |   0
 .../v2/reader/PhoenixInputPartitionReader.java     |   4 +-
 .../v2/writer/PhoenixDataSourceWriteOptions.java   |  17 +-
 .../v2/writer/PhoenixDataSourceWriter.java         |   0
 .../datasource/v2/writer/PhoenixDataWriter.java    |   0
 .../v2/writer/PhoenixDataWriterFactory.java        |   0
 ...org.apache.spark.sql.sources.DataSourceRegister |   0
 .../src/main/resources/log4j.xml                   |   0
 .../apache/phoenix/spark/ConfigurationUtil.scala   |   0
 .../apache/phoenix/spark/DataFrameFunctions.scala  |   0
 .../org/apache/phoenix/spark/DefaultSource.scala   |   0
 .../phoenix/spark/FilterExpressionCompiler.scala   |   0
 .../org/apache/phoenix/spark/PhoenixRDD.scala      |   0
 .../phoenix/spark/PhoenixRecordWritable.scala      |   0
 .../org/apache/phoenix/spark/PhoenixRelation.scala |   0
 .../apache/phoenix/spark/ProductRDDFunctions.scala |   0
 .../phoenix/spark/SparkContextFunctions.scala      |   0
 .../org/apache/phoenix/spark/SparkSchemaUtil.scala |   0
 .../phoenix/spark/SparkSqlContextFunctions.scala   |   0
 .../scala/org/apache/phoenix/spark/package.scala   |   0
 .../datasources/jdbc/PhoenixJdbcDialect.scala      |   0
 .../execution/datasources/jdbc/SparkJdbcUtil.scala |   0
 .../spark/datasource/v2/PhoenixDataSourceTest.java |   0
 .../datasource/v2/PhoenixTestingDataSource.java    |   0
 .../v2/reader/PhoenixTestingDataSourceReader.java  |   0
 .../v2/reader/PhoenixTestingInputPartition.java    |   0
 .../reader/PhoenixTestingInputPartitionReader.java |   0
 .../v2/writer/PhoenixTestingDataSourceWriter.java  |   0
 .../v2/writer/PhoenixTestingDataWriter.java        |   0
 .../v2/writer/PhoenixTestingDataWriterFactory.java |   0
 .../writer/PhoenixTestingWriterCommitMessage.java  |   0
 .../src/test}/resources/log4j.xml                  |   0
 phoenix-spark/pom.xml                              | 584 ------------------
 phoenix4-compat/pom.xml                            |  94 +++
 .../java/org/apache/phoenix/compat/CompatUtil.java |  53 ++
 phoenix5-compat/pom.xml                            |  95 +++
 .../java/org/apache/phoenix/compat/CompatUtil.java |  52 ++
 pom.xml                                            |  47 +-
 108 files changed, 1603 insertions(+), 650 deletions(-)

diff --git a/phoenix-flume-base/phoenix4-flume/pom.xml 
b/phoenix-flume-base/phoenix4-flume/pom.xml
new file mode 100644
index 0000000..3586387
--- /dev/null
+++ b/phoenix-flume-base/phoenix4-flume/pom.xml
@@ -0,0 +1,43 @@
+<?xml version='1.0'?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>phoenix-flume-base</artifactId>
+        <groupId>org.apache.phoenix</groupId>
+        <version>6.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>phoenix4-flume</artifactId>
+    <name>Phoenix Flume Connector for Phoenix 4</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.phoenix</groupId>
+            <artifactId>phoenix4-compat</artifactId>
+        </dependency>
+    </dependencies>
+
+
+</project>
\ No newline at end of file
diff --git a/phoenix-flume-base/phoenix5-flume/pom.xml 
b/phoenix-flume-base/phoenix5-flume/pom.xml
new file mode 100644
index 0000000..4239ae0
--- /dev/null
+++ b/phoenix-flume-base/phoenix5-flume/pom.xml
@@ -0,0 +1,53 @@
+<?xml version='1.0'?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>phoenix-flume-base</artifactId>
+        <groupId>org.apache.phoenix</groupId>
+        <version>6.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>phoenix5-flume</artifactId>
+    <name>Phoenix Flume Connector for Phoenix 5</name>
+
+    <properties>
+        <top.dir>${project.basedir}/..</top.dir>
+        <phoenix.version>${phoenix-five.version}</phoenix.version>
+        <hbase.version>${hbase-two.version}</hbase.version>
+        <hadoop.version>${hadoop-three.version}</hadoop.version>
+        <curator.version>4.0.0</curator.version>
+        <jdk.version>1.8</jdk.version>
+        <maven-shade-plugin.version>3.1.1</maven-shade-plugin.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.phoenix</groupId>
+            <artifactId>phoenix5-compat</artifactId>
+        </dependency>
+    </dependencies>
+
+
+</project>
\ No newline at end of file
diff --git a/phoenix-flume/pom.xml b/phoenix-flume-base/pom.xml
similarity index 77%
rename from phoenix-flume/pom.xml
rename to phoenix-flume-base/pom.xml
index 4a32c59..d360287 100644
--- a/phoenix-flume/pom.xml
+++ b/phoenix-flume-base/pom.xml
@@ -28,11 +28,16 @@
     <artifactId>phoenix-connectors</artifactId>
     <version>6.0.0-SNAPSHOT</version>
   </parent>
-  <artifactId>phoenix-flume</artifactId>
-  <name>Phoenix - Flume</name>
+  <artifactId>phoenix-flume-base</artifactId>
+  <name>Phoenix Flume Connector - Base</name>
+  <packaging>pom</packaging>
+  <modules>
+      <module>phoenix4-flume</module>
+      <module>phoenix5-flume</module>
+  </modules>
 
   <properties>
-    <top.dir>${project.basedir}/..</top.dir>
+      <top.dir>${project.basedir}/..</top.dir>
   </properties>
 
   <dependencies>
@@ -46,7 +51,6 @@
       <classifier>tests</classifier>
       <scope>test</scope>
     </dependency>
-
     <!-- Test Dependencies -->
     <dependency>
       <groupId>junit</groupId>
@@ -157,10 +161,37 @@
 
   <build>
     <plugins>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-      </plugin>
+        <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>build-helper-maven-plugin</artifactId>
+            <version>3.0.0</version>
+            <executions>
+                <execution>
+                    <id>add-source</id>
+                    <phase>generate-sources</phase>
+                    <goals>
+                        <goal>add-source</goal>
+                    </goals>
+                    <configuration>
+                        <sources>
+                            
<source>${project.parent.basedir}/src/main/java</source>
+                        </sources>
+                    </configuration>
+                </execution>
+                <execution>
+                    <id>add-test-source</id>
+                    <phase>generate-sources</phase>
+                    <goals>
+                        <goal>add-test-source</goal>
+                    </goals>
+                    <configuration>
+                        <sources>
+                            
<source>${project.parent.basedir}/src/it/java</source>
+                        </sources>
+                    </configuration>
+                </execution>
+            </executions>
+        </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-failsafe-plugin</artifactId>
diff --git 
a/phoenix-flume/src/it/java/org/apache/phoenix/flume/CsvEventSerializerIT.java 
b/phoenix-flume-base/src/it/java/org/apache/phoenix/flume/CsvEventSerializerIT.java
similarity index 100%
rename from 
phoenix-flume/src/it/java/org/apache/phoenix/flume/CsvEventSerializerIT.java
rename to 
phoenix-flume-base/src/it/java/org/apache/phoenix/flume/CsvEventSerializerIT.java
diff --git 
a/phoenix-flume/src/it/java/org/apache/phoenix/flume/JsonEventSerializerIT.java 
b/phoenix-flume-base/src/it/java/org/apache/phoenix/flume/JsonEventSerializerIT.java
similarity index 100%
rename from 
phoenix-flume/src/it/java/org/apache/phoenix/flume/JsonEventSerializerIT.java
rename to 
phoenix-flume-base/src/it/java/org/apache/phoenix/flume/JsonEventSerializerIT.java
diff --git 
a/phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java 
b/phoenix-flume-base/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
similarity index 97%
rename from 
phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
rename to 
phoenix-flume-base/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
index 88e8678..2e18d53 100644
--- a/phoenix-flume/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
+++ b/phoenix-flume-base/src/it/java/org/apache/phoenix/flume/PhoenixSinkIT.java
@@ -38,8 +38,8 @@ import org.apache.flume.conf.Configurables;
 import org.apache.flume.event.EventBuilder;
 import org.apache.flume.lifecycle.LifecycleState;
 import org.apache.flume.sink.DefaultSinkFactory;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.phoenix.compat.CompatUtil;
 import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT;
 import org.apache.phoenix.flume.serializer.CustomSerializer;
 import org.apache.phoenix.flume.serializer.EventSerializers;
@@ -186,13 +186,8 @@ public class PhoenixSinkIT extends BaseHBaseManagedTimeIT {
         sink.setChannel(channel);
         
         sink.start();
-        HBaseAdmin admin = driver.getConnectionQueryServices(getUrl(), 
TestUtil.TEST_PROPERTIES).getAdmin();
-        try {
-            boolean exists = admin.tableExists(fullTableName);
-            Assert.assertTrue(exists);
-        }finally {
-            admin.close();
-        }
+        
Assert.assertTrue(CompatUtil.tableExists(driver.getConnectionQueryServices(getUrl(),
+                TestUtil.TEST_PROPERTIES).getAdmin(), fullTableName));
     }
 
     @Test
diff --git 
a/phoenix-flume/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java
 
b/phoenix-flume-base/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java
similarity index 100%
rename from 
phoenix-flume/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java
rename to 
phoenix-flume-base/src/it/java/org/apache/phoenix/flume/RegexEventSerializerIT.java
diff --git 
a/phoenix-flume/src/it/java/org/apache/phoenix/flume/serializer/CustomSerializer.java
 
b/phoenix-flume-base/src/it/java/org/apache/phoenix/flume/serializer/CustomSerializer.java
similarity index 100%
rename from 
phoenix-flume/src/it/java/org/apache/phoenix/flume/serializer/CustomSerializer.java
rename to 
phoenix-flume-base/src/it/java/org/apache/phoenix/flume/serializer/CustomSerializer.java
diff --git 
a/phoenix-flume/src/it/java/org/apache/phoenix/flume/sink/NullPhoenixSink.java 
b/phoenix-flume-base/src/it/java/org/apache/phoenix/flume/sink/NullPhoenixSink.java
similarity index 100%
rename from 
phoenix-flume/src/it/java/org/apache/phoenix/flume/sink/NullPhoenixSink.java
rename to 
phoenix-flume-base/src/it/java/org/apache/phoenix/flume/sink/NullPhoenixSink.java
diff --git 
a/phoenix-flume/src/main/java/org/apache/phoenix/flume/DefaultKeyGenerator.java 
b/phoenix-flume-base/src/main/java/org/apache/phoenix/flume/DefaultKeyGenerator.java
similarity index 100%
rename from 
phoenix-flume/src/main/java/org/apache/phoenix/flume/DefaultKeyGenerator.java
rename to 
phoenix-flume-base/src/main/java/org/apache/phoenix/flume/DefaultKeyGenerator.java
diff --git 
a/phoenix-flume/src/main/java/org/apache/phoenix/flume/FlumeConstants.java 
b/phoenix-flume-base/src/main/java/org/apache/phoenix/flume/FlumeConstants.java
similarity index 100%
rename from 
phoenix-flume/src/main/java/org/apache/phoenix/flume/FlumeConstants.java
rename to 
phoenix-flume-base/src/main/java/org/apache/phoenix/flume/FlumeConstants.java
diff --git 
a/phoenix-flume/src/main/java/org/apache/phoenix/flume/KeyGenerator.java 
b/phoenix-flume-base/src/main/java/org/apache/phoenix/flume/KeyGenerator.java
similarity index 100%
rename from 
phoenix-flume/src/main/java/org/apache/phoenix/flume/KeyGenerator.java
rename to 
phoenix-flume-base/src/main/java/org/apache/phoenix/flume/KeyGenerator.java
diff --git 
a/phoenix-flume/src/main/java/org/apache/phoenix/flume/SchemaHandler.java 
b/phoenix-flume-base/src/main/java/org/apache/phoenix/flume/SchemaHandler.java
similarity index 100%
rename from 
phoenix-flume/src/main/java/org/apache/phoenix/flume/SchemaHandler.java
rename to 
phoenix-flume-base/src/main/java/org/apache/phoenix/flume/SchemaHandler.java
diff --git 
a/phoenix-flume/src/main/java/org/apache/phoenix/flume/serializer/BaseEventSerializer.java
 
b/phoenix-flume-base/src/main/java/org/apache/phoenix/flume/serializer/BaseEventSerializer.java
similarity index 100%
rename from 
phoenix-flume/src/main/java/org/apache/phoenix/flume/serializer/BaseEventSerializer.java
rename to 
phoenix-flume-base/src/main/java/org/apache/phoenix/flume/serializer/BaseEventSerializer.java
diff --git 
a/phoenix-flume/src/main/java/org/apache/phoenix/flume/serializer/CsvEventSerializer.java
 
b/phoenix-flume-base/src/main/java/org/apache/phoenix/flume/serializer/CsvEventSerializer.java
similarity index 100%
rename from 
phoenix-flume/src/main/java/org/apache/phoenix/flume/serializer/CsvEventSerializer.java
rename to 
phoenix-flume-base/src/main/java/org/apache/phoenix/flume/serializer/CsvEventSerializer.java
diff --git 
a/phoenix-flume/src/main/java/org/apache/phoenix/flume/serializer/EventSerializer.java
 
b/phoenix-flume-base/src/main/java/org/apache/phoenix/flume/serializer/EventSerializer.java
similarity index 100%
rename from 
phoenix-flume/src/main/java/org/apache/phoenix/flume/serializer/EventSerializer.java
rename to 
phoenix-flume-base/src/main/java/org/apache/phoenix/flume/serializer/EventSerializer.java
diff --git 
a/phoenix-flume/src/main/java/org/apache/phoenix/flume/serializer/EventSerializers.java
 
b/phoenix-flume-base/src/main/java/org/apache/phoenix/flume/serializer/EventSerializers.java
similarity index 100%
rename from 
phoenix-flume/src/main/java/org/apache/phoenix/flume/serializer/EventSerializers.java
rename to 
phoenix-flume-base/src/main/java/org/apache/phoenix/flume/serializer/EventSerializers.java
diff --git 
a/phoenix-flume/src/main/java/org/apache/phoenix/flume/serializer/JsonEventSerializer.java
 
b/phoenix-flume-base/src/main/java/org/apache/phoenix/flume/serializer/JsonEventSerializer.java
similarity index 100%
rename from 
phoenix-flume/src/main/java/org/apache/phoenix/flume/serializer/JsonEventSerializer.java
rename to 
phoenix-flume-base/src/main/java/org/apache/phoenix/flume/serializer/JsonEventSerializer.java
diff --git 
a/phoenix-flume/src/main/java/org/apache/phoenix/flume/serializer/RegexEventSerializer.java
 
b/phoenix-flume-base/src/main/java/org/apache/phoenix/flume/serializer/RegexEventSerializer.java
similarity index 100%
rename from 
phoenix-flume/src/main/java/org/apache/phoenix/flume/serializer/RegexEventSerializer.java
rename to 
phoenix-flume-base/src/main/java/org/apache/phoenix/flume/serializer/RegexEventSerializer.java
diff --git 
a/phoenix-flume/src/main/java/org/apache/phoenix/flume/sink/PhoenixSink.java 
b/phoenix-flume-base/src/main/java/org/apache/phoenix/flume/sink/PhoenixSink.java
similarity index 100%
rename from 
phoenix-flume/src/main/java/org/apache/phoenix/flume/sink/PhoenixSink.java
rename to 
phoenix-flume-base/src/main/java/org/apache/phoenix/flume/sink/PhoenixSink.java
diff --git a/phoenix-hive/pom.xml b/phoenix-hive/pom.xml
index 11a30e8..7bccd76 100644
--- a/phoenix-hive/pom.xml
+++ b/phoenix-hive/pom.xml
@@ -30,7 +30,7 @@
     <version>6.0.0-SNAPSHOT</version>
   </parent>
   <artifactId>phoenix-hive</artifactId>
-  <name>Phoenix - Hive</name>
+  <name>Phoenix Hive Connector for Phoenix 4</name>
 
   <dependencies>
     <dependency>
diff --git a/phoenix-hive3/pom.xml b/phoenix-hive3/pom.xml
index 444f807..4eff052 100644
--- a/phoenix-hive3/pom.xml
+++ b/phoenix-hive3/pom.xml
@@ -30,7 +30,7 @@
         <version>6.0.0-SNAPSHOT</version>
     </parent>
     <artifactId>phoenix-hive3</artifactId>
-    <name>Phoenix - Hive3</name>
+    <name>Phoenix Hive Connector for Phoenix 5</name>
     <properties>
         <test.tmp.dir>${project.build.directory}/tmp</test.tmp.dir>
         <netty.version>4.1.47.Final</netty.version>
diff --git a/phoenix-hive3/src/test/resources/tez-site.xml 
b/phoenix-hive3/src/test/resources/tez-site.xml
index 97ae8c5..ee638fb 100644
--- a/phoenix-hive3/src/test/resources/tez-site.xml
+++ b/phoenix-hive3/src/test/resources/tez-site.xml
@@ -65,5 +65,5 @@
   <description>Whether Hive ignores the mapjoin hint</description>
 </property>
 
-  
+
 </configuration>
\ No newline at end of file
diff --git a/phoenix-kafka-base/phoenix4-kafka/pom.xml 
b/phoenix-kafka-base/phoenix4-kafka/pom.xml
new file mode 100644
index 0000000..f6a130c
--- /dev/null
+++ b/phoenix-kafka-base/phoenix4-kafka/pom.xml
@@ -0,0 +1,35 @@
+<?xml version='1.0'?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>phoenix-kafka-base</artifactId>
+        <groupId>org.apache.phoenix</groupId>
+        <version>6.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>phoenix4-kafka</artifactId>
+    <name>Phoenix Kafka Connector for Phoenix 4</name>
+
+</project>
\ No newline at end of file
diff --git a/phoenix-kafka-base/phoenix5-kafka/pom.xml 
b/phoenix-kafka-base/phoenix5-kafka/pom.xml
new file mode 100644
index 0000000..a7afad5
--- /dev/null
+++ b/phoenix-kafka-base/phoenix5-kafka/pom.xml
@@ -0,0 +1,80 @@
+<?xml version='1.0'?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>phoenix-kafka-base</artifactId>
+        <groupId>org.apache.phoenix</groupId>
+        <version>6.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>phoenix5-kafka</artifactId>
+    <name>Phoenix Kafka Connector for Phoenix 5</name>
+
+    <properties>
+        <top.dir>${project.basedir}/..</top.dir>
+        <phoenix.version>${phoenix-five.version}</phoenix.version>
+        <hbase.version>${hbase-two.version}</hbase.version>
+        <hadoop.version>${hadoop-three.version}</hadoop.version>
+        <curator.version>4.0.0</curator.version>
+        <jdk.version>1.8</jdk.version>
+        <maven-shade-plugin.version>3.1.1</maven-shade-plugin.version>
+        <jetty.version>9.3.19.v20170502</jetty.version>
+    </properties>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-http</artifactId>
+            <version>${jetty.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-util</artifactId>
+            <version>${jetty.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-security</artifactId>
+            <version>${jetty.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-server</artifactId>
+            <version>${jetty.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-servlet</artifactId>
+            <version>${jetty.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-webapp</artifactId>
+            <version>${jetty.version}</version>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/phoenix-kafka/pom.xml b/phoenix-kafka-base/pom.xml
similarity index 83%
rename from phoenix-kafka/pom.xml
rename to phoenix-kafka-base/pom.xml
index 970fb08..5e5a13c 100644
--- a/phoenix-kafka/pom.xml
+++ b/phoenix-kafka-base/pom.xml
@@ -28,8 +28,8 @@
                <artifactId>phoenix-connectors</artifactId>
                <version>6.0.0-SNAPSHOT</version>
        </parent>
-       <artifactId>phoenix-kafka</artifactId>
-       <name>Phoenix - Kafka</name>
+       <artifactId>phoenix-kafka-base</artifactId>
+       <name>Phoenix Kafka Connector - Base</name>
 
        <licenses>
                <license>
@@ -45,6 +45,12 @@
                <url>http://www.apache.org</url>
        </organization>
 
+       <packaging>pom</packaging>
+       <modules>
+               <module>phoenix4-kafka</module>
+               <module>phoenix5-kafka</module>
+       </modules>
+
        <properties>
                <top.dir>${project.basedir}/..</top.dir>
        </properties>
@@ -185,12 +191,66 @@
                </dependency>
                <dependency>
                        <groupId>org.apache.phoenix</groupId>
-                       <artifactId>phoenix-flume</artifactId>
+                       <artifactId>phoenix4-flume</artifactId>
                </dependency>
        </dependencies>
 
        <build>
                <plugins>
+                       <plugin>
+                               <groupId>org.codehaus.mojo</groupId>
+                               
<artifactId>build-helper-maven-plugin</artifactId>
+                               <version>3.0.0</version>
+                               <executions>
+                                       <execution>
+                                               <id>add-source</id>
+                                               <phase>generate-sources</phase>
+                                               <goals>
+                                                       <goal>add-source</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <sources>
+                                                               
<source>${project.parent.basedir}/src/main/java</source>
+                                                       </sources>
+                                               </configuration>
+                                       </execution>
+                                       <execution>
+                                               <id>add-test-source</id>
+                                               <phase>generate-sources</phase>
+                                               <goals>
+                                                       
<goal>add-test-source</goal>
+                                               </goals>
+                                               <configuration>
+                                                       <sources>
+                                                               
<source>${project.parent.basedir}/src/it/java</source>
+                                                       </sources>
+                                               </configuration>
+                                       </execution>
+                               </executions>
+                       </plugin>
+
+                       <plugin>
+                               <artifactId>maven-resources-plugin</artifactId>
+                               <executions>
+                                       <execution>
+                                               <id>copy-resources</id>
+                                               
<phase>generate-resources</phase>
+                                               <goals>
+                                                       
<goal>copy-resources</goal>
+                                               </goals>
+                                               <configuration>
+                                                       
<outputDirectory>${project.build.directory}/test-classes
+                                                       </outputDirectory>
+                                                       
<overwrite>true</overwrite>
+                                                       <resources>
+                                                               <resource>
+                                                                       
<directory>${project.parent.basedir}/src/it/resources</directory>
+                                                               </resource>
+                                                       </resources>
+                                               </configuration>
+                                       </execution>
+                               </executions>
+                       </plugin>
                        <!-- Add the ant-generated sources to the source path 
-->
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
@@ -225,11 +285,6 @@
                                        </buildcommands>
                                </configuration>
                        </plugin>
-
-                       <plugin>
-                               <groupId>org.codehaus.mojo</groupId>
-                               
<artifactId>build-helper-maven-plugin</artifactId>
-                       </plugin>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-failsafe-plugin</artifactId>
@@ -238,10 +293,6 @@
                                <artifactId>maven-dependency-plugin</artifactId>
                                
<version>${maven-dependency-plugin.version}</version>
                        </plugin>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-resources-plugin</artifactId>
-                       </plugin>
 
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
@@ -259,9 +310,9 @@
                                                        
<shadeTestJar>false</shadeTestJar>
                                                        <artifactSet>
                                                                <includes>
-                                                                       
<include>org.apache.phoenix:phoenix-kafka</include>
+                                                                       
<include>org.apache.phoenix:phoenix4-kafka</include>
                                                                        
<include>org.apache.kafka:kafka-clients</include>
-                                                                       
<include>org.apache.phoenix:phoenix-flume</include>
+                                                                       
<include>org.apache.phoenix:phoenix4-flume</include>
                                                                </includes>
                                                        </artifactSet>
                                                </configuration>
diff --git 
a/phoenix-kafka/src/it/java/org/apache/phoenix/kafka/PhoenixConsumerIT.java 
b/phoenix-kafka-base/src/it/java/org/apache/phoenix/kafka/PhoenixConsumerIT.java
similarity index 100%
rename from 
phoenix-kafka/src/it/java/org/apache/phoenix/kafka/PhoenixConsumerIT.java
rename to 
phoenix-kafka-base/src/it/java/org/apache/phoenix/kafka/PhoenixConsumerIT.java
diff --git a/phoenix-kafka/src/it/resources/consumer.props 
b/phoenix-kafka-base/src/it/resources/consumer.props
similarity index 100%
rename from phoenix-kafka/src/it/resources/consumer.props
rename to phoenix-kafka-base/src/it/resources/consumer.props
diff --git a/phoenix-kafka/src/it/resources/producer.props 
b/phoenix-kafka-base/src/it/resources/producer.props
similarity index 100%
rename from phoenix-kafka/src/it/resources/producer.props
rename to phoenix-kafka-base/src/it/resources/producer.props
diff --git 
a/phoenix-kafka/src/main/java/org/apache/phoenix/kafka/KafkaConstants.java 
b/phoenix-kafka-base/src/main/java/org/apache/phoenix/kafka/KafkaConstants.java
similarity index 100%
rename from 
phoenix-kafka/src/main/java/org/apache/phoenix/kafka/KafkaConstants.java
rename to 
phoenix-kafka-base/src/main/java/org/apache/phoenix/kafka/KafkaConstants.java
diff --git 
a/phoenix-kafka/src/main/java/org/apache/phoenix/kafka/consumer/PhoenixConsumer.java
 
b/phoenix-kafka-base/src/main/java/org/apache/phoenix/kafka/consumer/PhoenixConsumer.java
similarity index 100%
rename from 
phoenix-kafka/src/main/java/org/apache/phoenix/kafka/consumer/PhoenixConsumer.java
rename to 
phoenix-kafka-base/src/main/java/org/apache/phoenix/kafka/consumer/PhoenixConsumer.java
diff --git 
a/phoenix-kafka/src/main/java/org/apache/phoenix/kafka/consumer/PhoenixConsumerTool.java
 
b/phoenix-kafka-base/src/main/java/org/apache/phoenix/kafka/consumer/PhoenixConsumerTool.java
similarity index 100%
rename from 
phoenix-kafka/src/main/java/org/apache/phoenix/kafka/consumer/PhoenixConsumerTool.java
rename to 
phoenix-kafka-base/src/main/java/org/apache/phoenix/kafka/consumer/PhoenixConsumerTool.java
diff --git a/phoenix-pig-base/phoenix4-pig/pom.xml 
b/phoenix-pig-base/phoenix4-pig/pom.xml
new file mode 100644
index 0000000..98bd8ca
--- /dev/null
+++ b/phoenix-pig-base/phoenix4-pig/pom.xml
@@ -0,0 +1,35 @@
+<?xml version='1.0'?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>phoenix-pig-base</artifactId>
+        <groupId>org.apache.phoenix</groupId>
+        <version>6.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>phoenix4-pig</artifactId>
+    <name>Phoenix Pig Connector for Phoenix 4</name>
+
+</project>
\ No newline at end of file
diff --git a/phoenix-pig-base/phoenix5-pig/pom.xml 
b/phoenix-pig-base/phoenix5-pig/pom.xml
new file mode 100644
index 0000000..44fe79a
--- /dev/null
+++ b/phoenix-pig-base/phoenix5-pig/pom.xml
@@ -0,0 +1,81 @@
+<?xml version='1.0'?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>phoenix-pig-base</artifactId>
+        <groupId>org.apache.phoenix</groupId>
+        <version>6.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>phoenix5-pig</artifactId>
+    <name>Phoenix Pig Connector for Phoenix 5</name>
+
+    <properties>
+        <top.dir>${project.basedir}/..</top.dir>
+        <shaded.package>org.apache.phoenix.shaded</shaded.package>
+        <phoenix.version>${phoenix-five.version}</phoenix.version>
+        <hbase.version>${hbase-two.version}</hbase.version>
+        <hadoop.version>${hadoop-three.version}</hadoop.version>
+        <curator.version>4.0.0</curator.version>
+        <jdk.version>1.8</jdk.version>
+        <maven-shade-plugin.version>3.1.1</maven-shade-plugin.version>
+        <jetty.version>9.3.19.v20170502</jetty.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-http</artifactId>
+            <version>${jetty.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-util</artifactId>
+            <version>${jetty.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-security</artifactId>
+            <version>${jetty.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-server</artifactId>
+            <version>${jetty.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-servlet</artifactId>
+            <version>${jetty.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jetty</groupId>
+            <artifactId>jetty-webapp</artifactId>
+            <version>${jetty.version}</version>
+        </dependency>
+    </dependencies>
+
+
+</project>
\ No newline at end of file
diff --git a/phoenix-pig/pom.xml b/phoenix-pig-base/pom.xml
similarity index 93%
rename from phoenix-pig/pom.xml
rename to phoenix-pig-base/pom.xml
index 81c978c..ae518f0 100644
--- a/phoenix-pig/pom.xml
+++ b/phoenix-pig-base/pom.xml
@@ -28,12 +28,16 @@
     <artifactId>phoenix-connectors</artifactId>
     <version>6.0.0-SNAPSHOT</version>
   </parent>
-  <artifactId>phoenix-pig</artifactId>
-  <name>Phoenix - Pig</name>
+  <artifactId>phoenix-pig-base</artifactId>
+  <name>Phoenix Pig Connector - Base</name>
+  <packaging>pom</packaging>
+  <modules>
+    <module>phoenix4-pig</module>
+    <module>phoenix5-pig</module>
+  </modules>
 
   <properties>
     <top.dir>${project.basedir}/..</top.dir>
-    <shaded.package>org.apache.phoenix.shaded</shaded.package>
   </properties>
 
   <dependencies>
@@ -47,7 +51,6 @@
       <classifier>tests</classifier>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.apache.pig</groupId>
       <artifactId>pig</artifactId>
@@ -158,6 +161,34 @@
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
+        <version>3.0.0</version>
+        <executions>
+          <execution>
+            <id>add-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>add-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>${project.parent.basedir}/src/main/java</source>
+              </sources>
+            </configuration>
+          </execution>
+          <execution>
+            <id>add-test-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>add-test-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>${project.parent.basedir}/src/test/java</source>
+                <source>${project.parent.basedir}/src/it/java</source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
diff --git a/phoenix-pig/src/it/java/org/apache/phoenix/pig/BasePigIT.java 
b/phoenix-pig-base/src/it/java/org/apache/phoenix/pig/BasePigIT.java
similarity index 100%
rename from phoenix-pig/src/it/java/org/apache/phoenix/pig/BasePigIT.java
rename to phoenix-pig-base/src/it/java/org/apache/phoenix/pig/BasePigIT.java
diff --git 
a/phoenix-pig/src/it/java/org/apache/phoenix/pig/PhoenixHBaseLoaderIT.java 
b/phoenix-pig-base/src/it/java/org/apache/phoenix/pig/PhoenixHBaseLoaderIT.java
similarity index 100%
rename from 
phoenix-pig/src/it/java/org/apache/phoenix/pig/PhoenixHBaseLoaderIT.java
rename to 
phoenix-pig-base/src/it/java/org/apache/phoenix/pig/PhoenixHBaseLoaderIT.java
diff --git 
a/phoenix-pig/src/it/java/org/apache/phoenix/pig/PhoenixHBaseStorerIT.java 
b/phoenix-pig-base/src/it/java/org/apache/phoenix/pig/PhoenixHBaseStorerIT.java
similarity index 100%
rename from 
phoenix-pig/src/it/java/org/apache/phoenix/pig/PhoenixHBaseStorerIT.java
rename to 
phoenix-pig-base/src/it/java/org/apache/phoenix/pig/PhoenixHBaseStorerIT.java
diff --git 
a/phoenix-pig/src/it/java/org/apache/phoenix/pig/udf/ReserveNSequenceTestIT.java
 
b/phoenix-pig-base/src/it/java/org/apache/phoenix/pig/udf/ReserveNSequenceTestIT.java
similarity index 100%
rename from 
phoenix-pig/src/it/java/org/apache/phoenix/pig/udf/ReserveNSequenceTestIT.java
rename to 
phoenix-pig-base/src/it/java/org/apache/phoenix/pig/udf/ReserveNSequenceTestIT.java
diff --git 
a/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixHBaseLoader.java 
b/phoenix-pig-base/src/main/java/org/apache/phoenix/pig/PhoenixHBaseLoader.java
similarity index 97%
rename from 
phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixHBaseLoader.java
rename to 
phoenix-pig-base/src/main/java/org/apache/phoenix/pig/PhoenixHBaseLoader.java
index ca212e5..41d3203 100644
--- a/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixHBaseLoader.java
+++ 
b/phoenix-pig-base/src/main/java/org/apache/phoenix/pig/PhoenixHBaseLoader.java
@@ -17,8 +17,6 @@
  */
 package org.apache.phoenix.pig;
 
-import static org.apache.commons.lang.StringUtils.isEmpty;
-
 import java.io.IOException;
 import java.util.Properties;
 
@@ -149,11 +147,12 @@ public final class PhoenixHBaseLoader extends LoadFunc 
implements LoadMetadata {
             this.tableName = pair.getFirst();
             final String selectedColumns = pair.getSecond();
             
-            if(isEmpty(this.tableName) && isEmpty(this.selectQuery)) {
+            if((this.tableName == null || this.tableName.equals("")) &&
+                    (this.selectQuery == null || this.selectQuery.equals(""))) 
{
                 printUsage(location);
             }
             PhoenixConfigurationUtil.setInputTableName(this.config, 
this.tableName);
-            if(!isEmpty(selectedColumns)) {
+            if(selectedColumns != null && !selectedColumns.isEmpty()) {
                 PhoenixConfigurationUtil.setSelectColumnNames(this.config, 
selectedColumns.split(","));   
             }
         } catch(IllegalArgumentException iae) {
diff --git 
a/phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixHBaseStorage.java 
b/phoenix-pig-base/src/main/java/org/apache/phoenix/pig/PhoenixHBaseStorage.java
similarity index 100%
rename from 
phoenix-pig/src/main/java/org/apache/phoenix/pig/PhoenixHBaseStorage.java
rename to 
phoenix-pig-base/src/main/java/org/apache/phoenix/pig/PhoenixHBaseStorage.java
diff --git 
a/phoenix-pig/src/main/java/org/apache/phoenix/pig/udf/ReserveNSequence.java 
b/phoenix-pig-base/src/main/java/org/apache/phoenix/pig/udf/ReserveNSequence.java
similarity index 100%
rename from 
phoenix-pig/src/main/java/org/apache/phoenix/pig/udf/ReserveNSequence.java
rename to 
phoenix-pig-base/src/main/java/org/apache/phoenix/pig/udf/ReserveNSequence.java
diff --git 
a/phoenix-pig/src/main/java/org/apache/phoenix/pig/util/PhoenixPigSchemaUtil.java
 
b/phoenix-pig-base/src/main/java/org/apache/phoenix/pig/util/PhoenixPigSchemaUtil.java
similarity index 100%
rename from 
phoenix-pig/src/main/java/org/apache/phoenix/pig/util/PhoenixPigSchemaUtil.java
rename to 
phoenix-pig-base/src/main/java/org/apache/phoenix/pig/util/PhoenixPigSchemaUtil.java
diff --git 
a/phoenix-pig/src/main/java/org/apache/phoenix/pig/util/QuerySchemaParserFunction.java
 
b/phoenix-pig-base/src/main/java/org/apache/phoenix/pig/util/QuerySchemaParserFunction.java
similarity index 100%
rename from 
phoenix-pig/src/main/java/org/apache/phoenix/pig/util/QuerySchemaParserFunction.java
rename to 
phoenix-pig-base/src/main/java/org/apache/phoenix/pig/util/QuerySchemaParserFunction.java
diff --git 
a/phoenix-pig/src/main/java/org/apache/phoenix/pig/util/SqlQueryToColumnInfoFunction.java
 
b/phoenix-pig-base/src/main/java/org/apache/phoenix/pig/util/SqlQueryToColumnInfoFunction.java
similarity index 100%
rename from 
phoenix-pig/src/main/java/org/apache/phoenix/pig/util/SqlQueryToColumnInfoFunction.java
rename to 
phoenix-pig-base/src/main/java/org/apache/phoenix/pig/util/SqlQueryToColumnInfoFunction.java
diff --git 
a/phoenix-pig/src/main/java/org/apache/phoenix/pig/util/TableSchemaParserFunction.java
 
b/phoenix-pig-base/src/main/java/org/apache/phoenix/pig/util/TableSchemaParserFunction.java
similarity index 100%
rename from 
phoenix-pig/src/main/java/org/apache/phoenix/pig/util/TableSchemaParserFunction.java
rename to 
phoenix-pig-base/src/main/java/org/apache/phoenix/pig/util/TableSchemaParserFunction.java
diff --git 
a/phoenix-pig/src/main/java/org/apache/phoenix/pig/util/TypeUtil.java 
b/phoenix-pig-base/src/main/java/org/apache/phoenix/pig/util/TypeUtil.java
similarity index 100%
rename from phoenix-pig/src/main/java/org/apache/phoenix/pig/util/TypeUtil.java
rename to 
phoenix-pig-base/src/main/java/org/apache/phoenix/pig/util/TypeUtil.java
diff --git 
a/phoenix-pig/src/test/java/org/apache/phoenix/pig/util/PhoenixPigSchemaUtilTest.java
 
b/phoenix-pig-base/src/test/java/org/apache/phoenix/pig/util/PhoenixPigSchemaUtilTest.java
similarity index 100%
rename from 
phoenix-pig/src/test/java/org/apache/phoenix/pig/util/PhoenixPigSchemaUtilTest.java
rename to 
phoenix-pig-base/src/test/java/org/apache/phoenix/pig/util/PhoenixPigSchemaUtilTest.java
diff --git 
a/phoenix-pig/src/test/java/org/apache/phoenix/pig/util/QuerySchemaParserFunctionTest.java
 
b/phoenix-pig-base/src/test/java/org/apache/phoenix/pig/util/QuerySchemaParserFunctionTest.java
similarity index 100%
rename from 
phoenix-pig/src/test/java/org/apache/phoenix/pig/util/QuerySchemaParserFunctionTest.java
rename to 
phoenix-pig-base/src/test/java/org/apache/phoenix/pig/util/QuerySchemaParserFunctionTest.java
diff --git 
a/phoenix-pig/src/test/java/org/apache/phoenix/pig/util/SqlQueryToColumnInfoFunctionTest.java
 
b/phoenix-pig-base/src/test/java/org/apache/phoenix/pig/util/SqlQueryToColumnInfoFunctionTest.java
similarity index 100%
rename from 
phoenix-pig/src/test/java/org/apache/phoenix/pig/util/SqlQueryToColumnInfoFunctionTest.java
rename to 
phoenix-pig-base/src/test/java/org/apache/phoenix/pig/util/SqlQueryToColumnInfoFunctionTest.java
diff --git 
a/phoenix-pig/src/test/java/org/apache/phoenix/pig/util/TableSchemaParserFunctionTest.java
 
b/phoenix-pig-base/src/test/java/org/apache/phoenix/pig/util/TableSchemaParserFunctionTest.java
similarity index 100%
rename from 
phoenix-pig/src/test/java/org/apache/phoenix/pig/util/TableSchemaParserFunctionTest.java
rename to 
phoenix-pig-base/src/test/java/org/apache/phoenix/pig/util/TableSchemaParserFunctionTest.java
diff --git 
a/phoenix-pig/src/test/java/org/apache/phoenix/pig/util/TypeUtilTest.java 
b/phoenix-pig-base/src/test/java/org/apache/phoenix/pig/util/TypeUtilTest.java
similarity index 100%
rename from 
phoenix-pig/src/test/java/org/apache/phoenix/pig/util/TypeUtilTest.java
rename to 
phoenix-pig-base/src/test/java/org/apache/phoenix/pig/util/TypeUtilTest.java
diff --git a/phoenix-spark/README.md b/phoenix-spark-base/README.md
similarity index 100%
rename from phoenix-spark/README.md
rename to phoenix-spark-base/README.md
diff --git a/phoenix-spark-base/phoenix4-spark/pom.xml 
b/phoenix-spark-base/phoenix4-spark/pom.xml
new file mode 100644
index 0000000..b1bd274
--- /dev/null
+++ b/phoenix-spark-base/phoenix4-spark/pom.xml
@@ -0,0 +1,42 @@
+<?xml version='1.0'?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>phoenix-spark-base</artifactId>
+        <groupId>org.apache.phoenix</groupId>
+        <version>6.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>phoenix4-spark</artifactId>
+    <name>Phoenix Spark Connector for Phoenix 4</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.phoenix</groupId>
+            <artifactId>phoenix4-compat</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>
\ No newline at end of file
diff --git a/phoenix-spark-base/phoenix5-spark/pom.xml 
b/phoenix-spark-base/phoenix5-spark/pom.xml
new file mode 100644
index 0000000..3587c1c
--- /dev/null
+++ b/phoenix-spark-base/phoenix5-spark/pom.xml
@@ -0,0 +1,74 @@
+<?xml version='1.0'?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <artifactId>phoenix-spark-base</artifactId>
+        <groupId>org.apache.phoenix</groupId>
+        <version>6.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>phoenix5-spark</artifactId>
+    <name>Phoenix Spark Connector for Phoenix 5</name>
+
+    <properties>
+        <top.dir>${project.basedir}/..</top.dir>
+        <phoenix.version>${phoenix-five.version}</phoenix.version>
+        <hbase.version>${hbase-two.version}</hbase.version>
+        <hadoop.version>${hadoop-three.version}</hadoop.version>
+        <curator.version>4.0.0</curator.version>
+        <jdk.version>1.8</jdk.version>
+        <maven-shade-plugin.version>3.1.1</maven-shade-plugin.version>
+        <jetty.version>9.3.19.v20170502</jetty.version>
+        <fasterxml.jackson.version>2.10.0</fasterxml.jackson.version>
+        <codehaus.jackson.version>1.9.13</codehaus.jackson.version>
+        <javax.version>3.1.0</javax.version>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.phoenix</groupId>
+            <artifactId>phoenix5-compat</artifactId>
+        </dependency>
+    </dependencies>
+
+    <dependencyManagement>
+        <dependencies>
+            <!-- Guava is excluded because of SPARK-6149.  The Guava version 
referenced in this module is
+                     15.0, which causes runtime incompatibility issues. -->
+            <dependency>
+                <groupId>com.fasterxml.jackson.module</groupId>
+                
<artifactId>jackson-module-scala_${scala.binary.version}</artifactId>
+                <version>${fasterxml.jackson.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <groupId>com.google.guava</groupId>
+                        <artifactId>guava</artifactId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+</project>
\ No newline at end of file
diff --git a/phoenix-spark-base/pom.xml b/phoenix-spark-base/pom.xml
new file mode 100644
index 0000000..a92b445
--- /dev/null
+++ b/phoenix-spark-base/pom.xml
@@ -0,0 +1,660 @@
+<?xml version='1.0'?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.phoenix</groupId>
+        <artifactId>phoenix-connectors</artifactId>
+        <version>6.0.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>phoenix-spark-base</artifactId>
+    <name>Phoenix Spark Connector - Base</name>
+
+    <properties>
+        <top.dir>${project.basedir}/..</top.dir>
+        <javax.version>3.0.1</javax.version>
+    </properties>
+
+    <packaging>pom</packaging>
+    <modules>
+        <module>phoenix4-spark</module>
+        <module>phoenix5-spark</module>
+    </modules>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.phoenix</groupId>
+            <artifactId>phoenix-core</artifactId>
+        </dependency>
+
+        <!-- Force import of Spark's servlet API for unit tests -->
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>${javax.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- Mark Spark / Scala as provided -->
+        <dependency>
+            <groupId>org.scala-lang</groupId>
+            <artifactId>scala-library</artifactId>
+            <version>${scala.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.spark</groupId>
+            <artifactId>spark-core_${scala.binary.version}</artifactId>
+            <version>${spark.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.spark</groupId>
+            <artifactId>spark-sql_${scala.binary.version}</artifactId>
+            <version>${spark.version}</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <!-- Test dependencies -->
+        <dependency>
+            <groupId>org.apache.phoenix</groupId>
+            <artifactId>phoenix-core</artifactId>
+            <classifier>tests</classifier>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.scalatest</groupId>
+            <artifactId>scalatest_${scala.binary.version}</artifactId>
+            <version>2.2.4</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.scalamock</groupId>
+            
<artifactId>scalamock-scalatest-support_${scala.binary.version}</artifactId>
+            <version>3.1.4</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.hadoop</groupId>
+            <artifactId>hadoop-client</artifactId>
+            <version>${hadoop.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>log4j</groupId>
+                    <artifactId>log4j</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>servlet-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet.jsp</groupId>
+                    <artifactId>jsp-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jruby</groupId>
+                    <artifactId>jruby-complete</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jboss.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.hadoop</groupId>
+            <artifactId>hadoop-common</artifactId>
+            <version>${hadoop.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>log4j</groupId>
+                    <artifactId>log4j</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>servlet-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet.jsp</groupId>
+                    <artifactId>jsp-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jruby</groupId>
+                    <artifactId>jruby-complete</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jboss.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.hadoop</groupId>
+            <artifactId>hadoop-common</artifactId>
+            <version>${hadoop.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>log4j</groupId>
+                    <artifactId>log4j</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>servlet-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet.jsp</groupId>
+                    <artifactId>jsp-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jruby</groupId>
+                    <artifactId>jruby-complete</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jboss.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.hadoop</groupId>
+            <artifactId>hadoop-hdfs</artifactId>
+            <version>${hadoop.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>log4j</groupId>
+                    <artifactId>log4j</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet</groupId>
+                    <artifactId>servlet-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>javax.servlet.jsp</groupId>
+                    <artifactId>jsp-api</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jruby</groupId>
+                    <artifactId>jruby-complete</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jboss.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.hbase</groupId>
+            <artifactId>hbase-client</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>log4j</groupId>
+                    <artifactId>log4j</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.thrift</groupId>
+                    <artifactId>thrift</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jruby</groupId>
+                    <artifactId>jruby-complete</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>jsp-2.1</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>jsp-api-2.1</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>servlet-api-2.5</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.jersey</groupId>
+                    <artifactId>jersey-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.jersey</groupId>
+                    <artifactId>jersey-json</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.jersey</groupId>
+                    <artifactId>jersey-server</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>jetty</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>jetty-util</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>tomcat</groupId>
+                    <artifactId>jasper-runtime</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>tomcat</groupId>
+                    <artifactId>jasper-compiler</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jruby</groupId>
+                    <artifactId>jruby-complete</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jboss.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.hbase</groupId>
+            <artifactId>hbase-hadoop-compat</artifactId>
+            <version>${hbase.version}</version>
+            <scope>test</scope>
+            <type>test-jar</type>
+            <exclusions>
+                <exclusion>
+                    <groupId>log4j</groupId>
+                    <artifactId>log4j</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.thrift</groupId>
+                    <artifactId>thrift</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jruby</groupId>
+                    <artifactId>jruby-complete</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>jsp-2.1</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>jsp-api-2.1</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>servlet-api-2.5</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.jersey</groupId>
+                    <artifactId>jersey-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.jersey</groupId>
+                    <artifactId>jersey-json</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.jersey</groupId>
+                    <artifactId>jersey-server</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>jetty</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>jetty-util</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>tomcat</groupId>
+                    <artifactId>jasper-runtime</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>tomcat</groupId>
+                    <artifactId>jasper-compiler</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jruby</groupId>
+                    <artifactId>jruby-complete</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jboss.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.hbase</groupId>
+            <artifactId>hbase-hadoop2-compat</artifactId>
+            <version>${hbase.version}</version>
+            <scope>test</scope>
+            <type>test-jar</type>
+            <exclusions>
+                <exclusion>
+                    <groupId>log4j</groupId>
+                    <artifactId>log4j</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.apache.thrift</groupId>
+                    <artifactId>thrift</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jruby</groupId>
+                    <artifactId>jruby-complete</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>jsp-2.1</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>jsp-api-2.1</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>servlet-api-2.5</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.jersey</groupId>
+                    <artifactId>jersey-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.jersey</groupId>
+                    <artifactId>jersey-json</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.sun.jersey</groupId>
+                    <artifactId>jersey-server</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>jetty</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.mortbay.jetty</groupId>
+                    <artifactId>jetty-util</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>tomcat</groupId>
+                    <artifactId>jasper-runtime</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>tomcat</groupId>
+                    <artifactId>jasper-compiler</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jruby</groupId>
+                    <artifactId>jruby-complete</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jboss.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>io.netty</groupId>
+                    <artifactId>netty</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hbase</groupId>
+            <artifactId>hbase-server</artifactId>
+            <version>${hbase.version}</version>
+            <scope>test</scope>
+            <type>test-jar</type>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hbase</groupId>
+            <artifactId>hbase-it</artifactId>
+            <version>${hbase.version}</version>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>build-helper-maven-plugin</artifactId>
+                <version>3.0.0</version>
+                <executions>
+                    <execution>
+                        <id>add-source</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                
<source>${project.parent.basedir}/src/main/java</source>
+                                
<source>${project.parent.basedir}/src/main/scala</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>add-test-source</id>
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <goal>add-test-source</goal>
+                        </goals>
+                        <configuration>
+                            <sources>
+                                
<source>${project.parent.basedir}/src/test/java</source>
+                                
<source>${project.parent.basedir}/src/it/java</source>
+                                
<source>${project.parent.basedir}/src/test/scala</source>
+                                
<source>${project.parent.basedir}/src/it/scala</source>
+                            </sources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <artifactId>maven-resources-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>copy-resources</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            
<outputDirectory>${project.build.directory}/test-classes
+                            </outputDirectory>
+                            <overwrite>true</overwrite>
+                            <resources>
+                                <resource>
+                                    
<directory>${project.parent.basedir}/src/it/resources</directory>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>copy-resources2</id>
+                        <phase>generate-resources</phase>
+                        <goals>
+                            <goal>copy-resources</goal>
+                        </goals>
+                        <configuration>
+                            <outputDirectory>${project.build.directory}/classes
+                            </outputDirectory>
+                            <overwrite>true</overwrite>
+                            <resources>
+                                <resource>
+                                    
<directory>${project.parent.basedir}/src/main/resources</directory>
+                                </resource>
+                            </resources>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-failsafe-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>net.alchim31.maven</groupId>
+                <artifactId>scala-maven-plugin</artifactId>
+                <version>3.4.4</version>
+                <configuration>
+                    <charset>${project.build.sourceEncoding}</charset>
+                    <jvmArgs>
+                        <jvmArg>-Xmx1024m</jvmArg>
+                    </jvmArgs>
+                    <scalaVersion>${scala.version}</scalaVersion>
+                    
<scalaCompatVersion>${scala.binary.version}</scalaCompatVersion>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>scala-compile-first</id>
+                        <phase>process-resources</phase>
+                        <goals>
+                            <goal>add-source</goal>
+                            <goal>compile</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>scala-test-compile</id>
+                        <phase>process-test-resources</phase>
+                        <goals>
+                            <goal>testCompile</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
+                <groupId>org.scalatest</groupId>
+                <artifactId>scalatest-maven-plugin</artifactId>
+                <version>1.0</version>
+                <configuration>
+                    
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
+                    <junitxml>.</junitxml>
+                    <filereports>WDF TestSuite.txt</filereports>
+                    <skipTests>true</skipTests>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>test</id>
+                        <phase>test</phase>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                    </execution>
+                    <execution>
+                        <id>integration-test</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                        <configuration>
+                            <!-- Need this false until we can switch to JUnit 
4.13 due to
+                            https://github.com/junit-team/junit4/issues/1223
+                            -->
+                            <parallel>false</parallel>
+                            <tagsToExclude>Integration-Test</tagsToExclude>
+                            <argLine>-Xmx1536m -XX:MaxPermSize=512m 
-XX:ReservedCodeCacheSize=512m</argLine>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>empty-javadoc-jar</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>jar</goal>
+                        </goals>
+                        <configuration>
+                            <classifier>javadoc</classifier>
+                            
<classesDirectory>${basedir}/javadoc</classesDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git 
a/phoenix-spark/src/it/java/org/apache/phoenix/spark/AggregateIT.java 
b/phoenix-spark-base/src/it/java/org/apache/phoenix/spark/AggregateIT.java
similarity index 100%
rename from phoenix-spark/src/it/java/org/apache/phoenix/spark/AggregateIT.java
rename to 
phoenix-spark-base/src/it/java/org/apache/phoenix/spark/AggregateIT.java
diff --git a/phoenix-spark/src/it/java/org/apache/phoenix/spark/OrderByIT.java 
b/phoenix-spark-base/src/it/java/org/apache/phoenix/spark/OrderByIT.java
similarity index 99%
rename from phoenix-spark/src/it/java/org/apache/phoenix/spark/OrderByIT.java
rename to phoenix-spark-base/src/it/java/org/apache/phoenix/spark/OrderByIT.java
index d269a28..664bc94 100644
--- a/phoenix-spark/src/it/java/org/apache/phoenix/spark/OrderByIT.java
+++ b/phoenix-spark-base/src/it/java/org/apache/phoenix/spark/OrderByIT.java
@@ -43,6 +43,8 @@ import org.apache.spark.sql.Row;
 import org.apache.spark.sql.SQLContext;
 import org.apache.spark.sql.sources.v2.DataSourceOptions;
 import org.junit.Test;
+import org.junit.Ignore;
+
 
 
 import scala.Option;
@@ -448,4 +450,10 @@ public class OrderByIT extends BaseOrderByIT {
             assertFalse(rs.next());
         }
     }
+
+    @Test
+    @Ignore
+    public void testOrderByNullable() throws SQLException {
+
+    }
 }
diff --git 
a/phoenix-spark/src/it/java/org/apache/phoenix/spark/SaltedTableIT.java 
b/phoenix-spark-base/src/it/java/org/apache/phoenix/spark/SaltedTableIT.java
similarity index 100%
rename from 
phoenix-spark/src/it/java/org/apache/phoenix/spark/SaltedTableIT.java
rename to 
phoenix-spark-base/src/it/java/org/apache/phoenix/spark/SaltedTableIT.java
diff --git a/phoenix-spark/src/it/java/org/apache/phoenix/spark/SparkUtil.java 
b/phoenix-spark-base/src/it/java/org/apache/phoenix/spark/SparkUtil.java
similarity index 100%
rename from phoenix-spark/src/it/java/org/apache/phoenix/spark/SparkUtil.java
rename to phoenix-spark-base/src/it/java/org/apache/phoenix/spark/SparkUtil.java
diff --git a/phoenix-spark/src/it/resources/globalSetup.sql 
b/phoenix-spark-base/src/it/resources/globalSetup.sql
similarity index 100%
rename from phoenix-spark/src/it/resources/globalSetup.sql
rename to phoenix-spark-base/src/it/resources/globalSetup.sql
diff --git a/phoenix-spark/src/test/resources/log4j.xml 
b/phoenix-spark-base/src/it/resources/log4j.xml
similarity index 100%
rename from phoenix-spark/src/test/resources/log4j.xml
rename to phoenix-spark-base/src/it/resources/log4j.xml
diff --git a/phoenix-spark/src/it/resources/tenantSetup.sql 
b/phoenix-spark-base/src/it/resources/tenantSetup.sql
similarity index 100%
rename from phoenix-spark/src/it/resources/tenantSetup.sql
rename to phoenix-spark-base/src/it/resources/tenantSetup.sql
diff --git 
a/phoenix-spark/src/it/scala/org/apache/phoenix/spark/AbstractPhoenixSparkIT.scala
 
b/phoenix-spark-base/src/it/scala/org/apache/phoenix/spark/AbstractPhoenixSparkIT.scala
similarity index 100%
rename from 
phoenix-spark/src/it/scala/org/apache/phoenix/spark/AbstractPhoenixSparkIT.scala
rename to 
phoenix-spark-base/src/it/scala/org/apache/phoenix/spark/AbstractPhoenixSparkIT.scala
diff --git 
a/phoenix-spark/src/it/scala/org/apache/phoenix/spark/PhoenixSparkIT.scala 
b/phoenix-spark-base/src/it/scala/org/apache/phoenix/spark/PhoenixSparkIT.scala
similarity index 100%
rename from 
phoenix-spark/src/it/scala/org/apache/phoenix/spark/PhoenixSparkIT.scala
rename to 
phoenix-spark-base/src/it/scala/org/apache/phoenix/spark/PhoenixSparkIT.scala
diff --git 
a/phoenix-spark/src/it/scala/org/apache/phoenix/spark/PhoenixSparkITTenantSpecific.scala
 
b/phoenix-spark-base/src/it/scala/org/apache/phoenix/spark/PhoenixSparkITTenantSpecific.scala
similarity index 100%
rename from 
phoenix-spark/src/it/scala/org/apache/phoenix/spark/PhoenixSparkITTenantSpecific.scala
rename to 
phoenix-spark-base/src/it/scala/org/apache/phoenix/spark/PhoenixSparkITTenantSpecific.scala
diff --git 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/SparkResultSet.java 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/SparkResultSet.java
similarity index 100%
rename from 
phoenix-spark/src/main/java/org/apache/phoenix/spark/SparkResultSet.java
rename to 
phoenix-spark-base/src/main/java/org/apache/phoenix/spark/SparkResultSet.java
diff --git 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/PhoenixDataSource.java
 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/PhoenixDataSource.java
similarity index 100%
rename from 
phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/PhoenixDataSource.java
rename to 
phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/PhoenixDataSource.java
diff --git 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixDataSourceReadOptions.java
 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixDataSourceReadOptions.java
similarity index 100%
rename from 
phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixDataSourceReadOptions.java
rename to 
phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixDataSourceReadOptions.java
diff --git 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixDataSourceReader.java
 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixDataSourceReader.java
similarity index 96%
rename from 
phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixDataSourceReader.java
rename to 
phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixDataSourceReader.java
index 36b7efb..79d8ba2 100644
--- 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixDataSourceReader.java
+++ 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixDataSourceReader.java
@@ -21,7 +21,7 @@ import org.apache.hadoop.hbase.HRegionLocation;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.client.RegionLocator;
 import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.util.RegionSizeCalculator;
+import org.apache.phoenix.compat.CompatUtil;
 import org.apache.phoenix.compile.QueryPlan;
 import org.apache.phoenix.iterate.MapReduceParallelScanGrouper;
 import org.apache.phoenix.jdbc.PhoenixConnection;
@@ -168,8 +168,6 @@ public class PhoenixDataSourceReader implements 
DataSourceReader, SupportsPushDo
                     phxConn.getQueryServices().getAdmin().getConnection();
             RegionLocator regionLocator = 
connection.getRegionLocator(TableName.valueOf(queryPlan
                     .getTableRef().getTable().getPhysicalName().toString()));
-            RegionSizeCalculator sizeCalculator = new 
RegionSizeCalculator(regionLocator, connection
-                    .getAdmin());
 
             final List<InputPartition<InternalRow>> partitions = new 
ArrayList<>(allSplits.size());
             for (List<Scan> scans : queryPlan.getScans()) {
@@ -182,8 +180,7 @@ public class PhoenixDataSourceReader implements 
DataSourceReader, SupportsPushDo
                 String regionLocation = location.getHostname();
 
                 // Get the region size
-                long regionSize = sizeCalculator.getRegionSize(
-                        location.getRegionInfo().getRegionName());
+                long regionSize = CompatUtil.getSize(regionLocator, 
connection.getAdmin(), location);
 
                 PhoenixDataSourceReadOptions phoenixDataSourceOptions =
                         new PhoenixDataSourceReadOptions(zkUrl, 
currentScnValue.orElse(null),
diff --git 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixInputPartition.java
 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixInputPartition.java
similarity index 100%
rename from 
phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixInputPartition.java
rename to 
phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixInputPartition.java
diff --git 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixInputPartitionReader.java
 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixInputPartitionReader.java
similarity index 98%
rename from 
phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixInputPartitionReader.java
rename to 
phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixInputPartitionReader.java
index 3b6e8e3..ec12718 100644
--- 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixInputPartitionReader.java
+++ 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixInputPartitionReader.java
@@ -28,6 +28,8 @@ import java.util.Properties;
 
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.util.Bytes;
+
+import org.apache.phoenix.compat.CompatUtil;
 import org.apache.phoenix.compile.QueryPlan;
 import org.apache.phoenix.compile.StatementContext;
 import org.apache.phoenix.coprocessor.BaseScannerRegionObserver;
@@ -116,7 +118,7 @@ public class PhoenixInputPartitionReader implements 
InputPartitionReader<Interna
             // Clear the table region boundary cache to make sure long running 
jobs stay up to date
             byte[] tableNameBytes = 
queryPlan.getTableRef().getTable().getPhysicalName().getBytes();
             ConnectionQueryServices services = 
queryPlan.getContext().getConnection().getQueryServices();
-            services.clearTableRegionCache(tableNameBytes);
+            
services.clearTableRegionCache(CompatUtil.getTableName(tableNameBytes));
 
             long renewScannerLeaseThreshold = 
queryPlan.getContext().getConnection()
                     .getQueryServices().getRenewLeaseThresholdMilliSeconds();
diff --git 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataSourceWriteOptions.java
 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataSourceWriteOptions.java
similarity index 91%
rename from 
phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataSourceWriteOptions.java
rename to 
phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataSourceWriteOptions.java
index c130db8..cc7f459 100644
--- 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataSourceWriteOptions.java
+++ 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataSourceWriteOptions.java
@@ -17,7 +17,6 @@
  */
 package org.apache.phoenix.spark.datasource.v2.writer;
 
-import jline.internal.Preconditions;
 import org.apache.spark.sql.types.StructType;
 
 import java.io.Serializable;
@@ -36,10 +35,18 @@ class PhoenixDataSourceWriteOptions implements Serializable 
{
     private PhoenixDataSourceWriteOptions(String tableName, String zkUrl, 
String scn,
             String tenantId, StructType schema, boolean 
skipNormalizingIdentifier,
             Properties overriddenProps) {
-        Preconditions.checkNotNull(tableName);
-        Preconditions.checkNotNull(zkUrl);
-        Preconditions.checkNotNull(schema);
-        Preconditions.checkNotNull(overriddenProps);
+        if (tableName == null) {
+            throw new NullPointerException();
+        }
+        if (zkUrl == null) {
+            throw new NullPointerException();
+        }
+        if (schema == null) {
+            throw new NullPointerException();
+        }
+        if (overriddenProps == null) {
+            throw new NullPointerException();
+        }
         this.tableName = tableName;
         this.zkUrl = zkUrl;
         this.scn = scn;
diff --git 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataSourceWriter.java
 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataSourceWriter.java
similarity index 100%
rename from 
phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataSourceWriter.java
rename to 
phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataSourceWriter.java
diff --git 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataWriter.java
 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataWriter.java
similarity index 100%
rename from 
phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataWriter.java
rename to 
phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataWriter.java
diff --git 
a/phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataWriterFactory.java
 
b/phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataWriterFactory.java
similarity index 100%
rename from 
phoenix-spark/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataWriterFactory.java
rename to 
phoenix-spark-base/src/main/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixDataWriterFactory.java
diff --git 
a/phoenix-spark/src/main/resources/META-INF/services/org.apache.spark.sql.sources.DataSourceRegister
 
b/phoenix-spark-base/src/main/resources/META-INF/services/org.apache.spark.sql.sources.DataSourceRegister
similarity index 100%
rename from 
phoenix-spark/src/main/resources/META-INF/services/org.apache.spark.sql.sources.DataSourceRegister
rename to 
phoenix-spark-base/src/main/resources/META-INF/services/org.apache.spark.sql.sources.DataSourceRegister
diff --git a/phoenix-spark/src/main/resources/log4j.xml 
b/phoenix-spark-base/src/main/resources/log4j.xml
similarity index 100%
rename from phoenix-spark/src/main/resources/log4j.xml
rename to phoenix-spark-base/src/main/resources/log4j.xml
diff --git 
a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/ConfigurationUtil.scala 
b/phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/ConfigurationUtil.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/phoenix/spark/ConfigurationUtil.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/ConfigurationUtil.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/DataFrameFunctions.scala
 
b/phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/DataFrameFunctions.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/phoenix/spark/DataFrameFunctions.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/DataFrameFunctions.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/DefaultSource.scala 
b/phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/DefaultSource.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/phoenix/spark/DefaultSource.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/DefaultSource.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/FilterExpressionCompiler.scala
 
b/phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/FilterExpressionCompiler.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/phoenix/spark/FilterExpressionCompiler.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/FilterExpressionCompiler.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/PhoenixRDD.scala 
b/phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/PhoenixRDD.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/phoenix/spark/PhoenixRDD.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/PhoenixRDD.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/PhoenixRecordWritable.scala
 
b/phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/PhoenixRecordWritable.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/phoenix/spark/PhoenixRecordWritable.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/PhoenixRecordWritable.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/PhoenixRelation.scala 
b/phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/PhoenixRelation.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/phoenix/spark/PhoenixRelation.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/PhoenixRelation.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/ProductRDDFunctions.scala
 
b/phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/ProductRDDFunctions.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/phoenix/spark/ProductRDDFunctions.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/ProductRDDFunctions.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/SparkContextFunctions.scala
 
b/phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/SparkContextFunctions.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/phoenix/spark/SparkContextFunctions.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/SparkContextFunctions.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/SparkSchemaUtil.scala 
b/phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/SparkSchemaUtil.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/phoenix/spark/SparkSchemaUtil.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/SparkSchemaUtil.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/SparkSqlContextFunctions.scala
 
b/phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/SparkSqlContextFunctions.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/phoenix/spark/SparkSqlContextFunctions.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/SparkSqlContextFunctions.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/phoenix/spark/package.scala 
b/phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/package.scala
similarity index 100%
rename from phoenix-spark/src/main/scala/org/apache/phoenix/spark/package.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/phoenix/spark/package.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/PhoenixJdbcDialect.scala
 
b/phoenix-spark-base/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/PhoenixJdbcDialect.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/PhoenixJdbcDialect.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/PhoenixJdbcDialect.scala
diff --git 
a/phoenix-spark/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/SparkJdbcUtil.scala
 
b/phoenix-spark-base/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/SparkJdbcUtil.scala
similarity index 100%
rename from 
phoenix-spark/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/SparkJdbcUtil.scala
rename to 
phoenix-spark-base/src/main/scala/org/apache/spark/sql/execution/datasources/jdbc/SparkJdbcUtil.scala
diff --git 
a/phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/PhoenixDataSourceTest.java
 
b/phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/PhoenixDataSourceTest.java
similarity index 100%
rename from 
phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/PhoenixDataSourceTest.java
rename to 
phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/PhoenixDataSourceTest.java
diff --git 
a/phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/PhoenixTestingDataSource.java
 
b/phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/PhoenixTestingDataSource.java
similarity index 100%
rename from 
phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/PhoenixTestingDataSource.java
rename to 
phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/PhoenixTestingDataSource.java
diff --git 
a/phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixTestingDataSourceReader.java
 
b/phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixTestingDataSourceReader.java
similarity index 100%
rename from 
phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixTestingDataSourceReader.java
rename to 
phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixTestingDataSourceReader.java
diff --git 
a/phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixTestingInputPartition.java
 
b/phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixTestingInputPartition.java
similarity index 100%
rename from 
phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixTestingInputPartition.java
rename to 
phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixTestingInputPartition.java
diff --git 
a/phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixTestingInputPartitionReader.java
 
b/phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixTestingInputPartitionReader.java
similarity index 100%
rename from 
phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixTestingInputPartitionReader.java
rename to 
phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/reader/PhoenixTestingInputPartitionReader.java
diff --git 
a/phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingDataSourceWriter.java
 
b/phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingDataSourceWriter.java
similarity index 100%
rename from 
phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingDataSourceWriter.java
rename to 
phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingDataSourceWriter.java
diff --git 
a/phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingDataWriter.java
 
b/phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingDataWriter.java
similarity index 100%
rename from 
phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingDataWriter.java
rename to 
phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingDataWriter.java
diff --git 
a/phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingDataWriterFactory.java
 
b/phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingDataWriterFactory.java
similarity index 100%
rename from 
phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingDataWriterFactory.java
rename to 
phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingDataWriterFactory.java
diff --git 
a/phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingWriterCommitMessage.java
 
b/phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingWriterCommitMessage.java
similarity index 100%
rename from 
phoenix-spark/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingWriterCommitMessage.java
rename to 
phoenix-spark-base/src/test/java/org/apache/phoenix/spark/datasource/v2/writer/PhoenixTestingWriterCommitMessage.java
diff --git a/phoenix-spark/src/it/resources/log4j.xml 
b/phoenix-spark-base/src/test/resources/log4j.xml
similarity index 100%
rename from phoenix-spark/src/it/resources/log4j.xml
rename to phoenix-spark-base/src/test/resources/log4j.xml
diff --git a/phoenix-spark/pom.xml b/phoenix-spark/pom.xml
deleted file mode 100644
index ea426c3..0000000
--- a/phoenix-spark/pom.xml
+++ /dev/null
@@ -1,584 +0,0 @@
-<?xml version='1.0'?>
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you 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.
-
--->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0";
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.phoenix</groupId>
-    <artifactId>phoenix-connectors</artifactId>
-    <version>6.0.0-SNAPSHOT</version>
-  </parent>
-  <artifactId>phoenix-spark</artifactId>
-  <name>Phoenix - Spark</name>
-
-  <properties>
-    <top.dir>${project.basedir}/..</top.dir>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.phoenix</groupId>
-      <artifactId>phoenix-core</artifactId>
-    </dependency>
-
-    <!-- Force import of Spark's servlet API for unit tests -->
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
-      <version>3.0.1</version>
-      <scope>test</scope>
-    </dependency>
-
-    <!-- Mark Spark / Scala as provided -->
-    <dependency>
-      <groupId>org.scala-lang</groupId>
-      <artifactId>scala-library</artifactId>
-      <version>${scala.version}</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.spark</groupId>
-      <artifactId>spark-core_${scala.binary.version}</artifactId>
-      <version>${spark.version}</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.spark</groupId>
-      <artifactId>spark-sql_${scala.binary.version}</artifactId>
-      <version>${spark.version}</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <!-- Test dependencies -->
-    <dependency>
-      <groupId>org.apache.phoenix</groupId>
-      <artifactId>phoenix-core</artifactId>
-      <classifier>tests</classifier>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.scalatest</groupId>
-      <artifactId>scalatest_${scala.binary.version}</artifactId>
-      <version>2.2.4</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.scalamock</groupId>
-      
<artifactId>scalamock-scalatest-support_${scala.binary.version}</artifactId>
-      <version>3.1.4</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-client</artifactId>
-      <version>${hadoop-two.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>log4j</groupId>
-          <artifactId>log4j</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>servlet-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>javax.servlet.jsp</groupId>
-          <artifactId>jsp-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jruby</groupId>
-          <artifactId>jruby-complete</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>io.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-common</artifactId>
-      <version>${hadoop-two.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>log4j</groupId>
-          <artifactId>log4j</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>servlet-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>javax.servlet.jsp</groupId>
-          <artifactId>jsp-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jruby</groupId>
-          <artifactId>jruby-complete</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>io.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-common</artifactId>
-      <version>${hadoop-two.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>log4j</groupId>
-          <artifactId>log4j</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>servlet-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>javax.servlet.jsp</groupId>
-          <artifactId>jsp-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jruby</groupId>
-          <artifactId>jruby-complete</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>io.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-hdfs</artifactId>
-      <version>${hadoop-two.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>log4j</groupId>
-          <artifactId>log4j</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>javax.servlet</groupId>
-          <artifactId>servlet-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>javax.servlet.jsp</groupId>
-          <artifactId>jsp-api</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jruby</groupId>
-          <artifactId>jruby-complete</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>io.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-client</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>log4j</groupId>
-          <artifactId>log4j</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.thrift</groupId>
-          <artifactId>thrift</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jruby</groupId>
-          <artifactId>jruby-complete</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.slf4j</groupId>
-          <artifactId>slf4j-log4j12</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jsp-2.1</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jsp-api-2.1</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>servlet-api-2.5</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-core</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-json</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-server</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jetty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jetty-util</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>tomcat</groupId>
-          <artifactId>jasper-runtime</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>tomcat</groupId>
-          <artifactId>jasper-compiler</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jruby</groupId>
-          <artifactId>jruby-complete</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>io.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-hadoop-compat</artifactId>
-      <version>${hbase.version}</version>
-      <scope>test</scope>
-      <type>test-jar</type>
-      <exclusions>
-        <exclusion>
-          <groupId>log4j</groupId>
-          <artifactId>log4j</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.thrift</groupId>
-          <artifactId>thrift</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jruby</groupId>
-          <artifactId>jruby-complete</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.slf4j</groupId>
-          <artifactId>slf4j-log4j12</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jsp-2.1</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jsp-api-2.1</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>servlet-api-2.5</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-core</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-json</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-server</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jetty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jetty-util</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>tomcat</groupId>
-          <artifactId>jasper-runtime</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>tomcat</groupId>
-          <artifactId>jasper-compiler</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jruby</groupId>
-          <artifactId>jruby-complete</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>io.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-hadoop2-compat</artifactId>
-      <version>${hbase.version}</version>
-      <scope>test</scope>
-      <type>test-jar</type>
-      <exclusions>
-        <exclusion>
-          <groupId>log4j</groupId>
-          <artifactId>log4j</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.apache.thrift</groupId>
-          <artifactId>thrift</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jruby</groupId>
-          <artifactId>jruby-complete</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.slf4j</groupId>
-          <artifactId>slf4j-log4j12</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jsp-2.1</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jsp-api-2.1</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>servlet-api-2.5</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-core</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-json</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>com.sun.jersey</groupId>
-          <artifactId>jersey-server</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jetty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.mortbay.jetty</groupId>
-          <artifactId>jetty-util</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>tomcat</groupId>
-          <artifactId>jasper-runtime</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>tomcat</groupId>
-          <artifactId>jasper-compiler</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jruby</groupId>
-          <artifactId>jruby-complete</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>org.jboss.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>io.netty</groupId>
-          <artifactId>netty</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-server</artifactId>
-      <version>${hbase.version}</version>
-      <scope>test</scope>
-      <type>test-jar</type>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-it</artifactId>
-      <version>${hbase.version}</version>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <testSourceDirectory>src/test/java</testSourceDirectory>
-    
<testResources><testResource><directory>src/test/resources</directory></testResource></testResources>
-    <plugins>
-        <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-compiler-plugin</artifactId>
-            <configuration>
-                <source>1.8</source>
-                <target>1.8</target>
-            </configuration>
-        </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-failsafe-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>net.alchim31.maven</groupId>
-        <artifactId>scala-maven-plugin</artifactId>
-        <version>3.4.4</version>
-        <configuration>
-          <charset>${project.build.sourceEncoding}</charset>
-          <jvmArgs>
-            <jvmArg>-Xmx1024m</jvmArg>
-          </jvmArgs>
-          <scalaVersion>${scala.version}</scalaVersion>
-          <scalaCompatVersion>${scala.binary.version}</scalaCompatVersion>
-        </configuration>
-        <executions>
-          <execution>
-            <id>scala-compile-first</id>
-            <phase>process-resources</phase>
-            <goals>
-              <goal>add-source</goal>
-              <goal>compile</goal>
-            </goals>
-          </execution>
-          <execution>
-            <id>scala-test-compile</id>
-            <phase>process-test-resources</phase>
-            <goals>
-              <goal>testCompile</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-
-      <plugin>
-        <groupId>org.scalatest</groupId>
-        <artifactId>scalatest-maven-plugin</artifactId>
-        <version>1.0</version>
-        <configuration>
-          
<reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
-          <junitxml>.</junitxml>
-          <filereports>WDF TestSuite.txt</filereports>
-        </configuration>
-        <executions>
-          <execution>
-            <id>test</id>
-            <phase>test</phase>
-            <goals>
-              <goal>test</goal>
-            </goals>
-          </execution>
-          <execution>
-            <id>integration-test</id>
-            <phase>integration-test</phase>
-            <goals>
-              <goal>test</goal>
-            </goals>
-            <configuration>
-              <!-- Need this false until we can switch to JUnit 4.13 due to
-              https://github.com/junit-team/junit4/issues/1223
-              -->
-              <parallel>false</parallel>
-              <tagsToExclude>Integration-Test</tagsToExclude>
-              <argLine>-Xmx1536m -XX:MaxPermSize=512m 
-XX:ReservedCodeCacheSize=512m</argLine>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>empty-javadoc-jar</id>
-            <phase>package</phase>
-            <goals>
-              <goal>jar</goal>
-            </goals>
-            <configuration>
-              <classifier>javadoc</classifier>
-              <classesDirectory>${basedir}/javadoc</classesDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/phoenix4-compat/pom.xml b/phoenix4-compat/pom.xml
new file mode 100644
index 0000000..5c6a487
--- /dev/null
+++ b/phoenix4-compat/pom.xml
@@ -0,0 +1,94 @@
+<?xml version='1.0'?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>14</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <version>6.0.0-SNAPSHOT</version>
+
+    <groupId>org.apache.phoenix</groupId>
+    <artifactId>phoenix4-compat</artifactId>
+
+    <properties>
+        <phoenix.version>4.15.0-HBase-1.4</phoenix.version>
+        <hbase.version>1.4.0</hbase.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <!-- Setup eclipse -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-eclipse-plugin</artifactId>
+                <version>2.9</version>
+                <configuration>
+                    <buildcommands>
+                        
<buildcommand>org.eclipse.jdt.core.javabuilder</buildcommand>
+                    </buildcommands>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <!-- HBase dependencies -->
+        <dependency>
+            <groupId>org.apache.hbase</groupId>
+            <artifactId>hbase-client</artifactId>
+            <version>${hbase.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hbase</groupId>
+            <artifactId>hbase-common</artifactId>
+            <version>${hbase.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hbase</groupId>
+            <artifactId>hbase-server</artifactId>
+            <version>${hbase.version}</version>
+        </dependency>
+    </dependencies>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>findbugs-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </reporting>
+</project>
\ No newline at end of file
diff --git 
a/phoenix4-compat/src/main/java/org/apache/phoenix/compat/CompatUtil.java 
b/phoenix4-compat/src/main/java/org/apache/phoenix/compat/CompatUtil.java
new file mode 100644
index 0000000..4d35543
--- /dev/null
+++ b/phoenix4-compat/src/main/java/org/apache/phoenix/compat/CompatUtil.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.phoenix.compat;
+
+import org.apache.hadoop.hbase.HRegionLocation;
+import org.apache.hadoop.hbase.client.Admin;
+import org.apache.hadoop.hbase.client.HBaseAdmin;
+import org.apache.hadoop.hbase.client.RegionLocator;
+import org.apache.hadoop.hbase.util.RegionSizeCalculator;
+import org.junit.Assert;
+
+import java.io.IOException;
+
+public class CompatUtil {
+
+    private CompatUtil() {
+        // Not to be instantiated
+    }
+
+    public static boolean tableExists(HBaseAdmin admin, String fullTableName)
+            throws IOException {
+        try {
+            return admin.tableExists(fullTableName);
+        } finally {
+            admin.close();
+        }
+    }
+
+    public static long getSize(RegionLocator regionLocator, Admin admin,
+                               HRegionLocation location) throws IOException {
+        RegionSizeCalculator sizeCalculator = new 
RegionSizeCalculator(regionLocator, admin);
+        return 
sizeCalculator.getRegionSize(location.getRegionInfo().getRegionName());
+    }
+
+    public static byte[] getTableName(byte[] tableNameBytes) {
+        return tableNameBytes;
+    }
+}
diff --git a/phoenix5-compat/pom.xml b/phoenix5-compat/pom.xml
new file mode 100644
index 0000000..729e923
--- /dev/null
+++ b/phoenix5-compat/pom.xml
@@ -0,0 +1,95 @@
+<?xml version='1.0'?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <parent>
+        <groupId>org.apache</groupId>
+        <artifactId>apache</artifactId>
+        <version>14</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <version>6.0.0-SNAPSHOT</version>
+
+    <groupId>org.apache.phoenix</groupId>
+    <artifactId>phoenix5-compat</artifactId>
+
+    <properties>
+        <phoenix.version>5.1.0-SNAPSHOT</phoenix.version>
+        <hbase.version>2.2.4</hbase.version>
+    </properties>
+
+    <build>
+        <plugins>
+            <!-- Setup eclipse -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-eclipse-plugin</artifactId>
+                <version>2.9</version>
+                <configuration>
+                    <buildcommands>
+                        
<buildcommand>org.eclipse.jdt.core.javabuilder</buildcommand>
+                    </buildcommands>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.rat</groupId>
+                <artifactId>apache-rat-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <!-- HBase dependencies -->
+        <dependency>
+            <groupId>org.apache.hbase</groupId>
+            <artifactId>hbase-client</artifactId>
+            <version>${hbase.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hbase</groupId>
+            <artifactId>hbase-common</artifactId>
+            <version>${hbase.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hbase</groupId>
+            <artifactId>hbase-mapreduce</artifactId>
+            <version>${hbase.version}</version>
+        </dependency>
+
+    </dependencies>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-project-info-reports-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>findbugs-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </reporting>
+</project>
\ No newline at end of file
diff --git 
a/phoenix5-compat/src/main/java/org/apache/phoenix/compat/CompatUtil.java 
b/phoenix5-compat/src/main/java/org/apache/phoenix/compat/CompatUtil.java
new file mode 100644
index 0000000..0fc7988
--- /dev/null
+++ b/phoenix5-compat/src/main/java/org/apache/phoenix/compat/CompatUtil.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 org.apache.phoenix.compat;
+
+import org.apache.hadoop.hbase.HRegionLocation;
+import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.client.Admin;
+import org.apache.hadoop.hbase.client.RegionLocator;
+import org.apache.hadoop.hbase.mapreduce.RegionSizeCalculator;
+
+import java.io.IOException;
+
+public class CompatUtil {
+
+    private CompatUtil() {
+        // Not to be instantiated
+    }
+
+    public static boolean tableExists(Admin admin, String fullTableName)
+            throws IOException {
+        try {
+            return admin.tableExists(TableName.valueOf(fullTableName));
+        } finally {
+            admin.close();
+        }
+    }
+
+    public static long getSize(RegionLocator regionLocator, Admin admin,
+                               HRegionLocation location) throws IOException {
+        RegionSizeCalculator sizeCalculator = new 
RegionSizeCalculator(regionLocator, admin);
+        return 
sizeCalculator.getRegionSize(location.getRegionInfo().getRegionName());
+    }
+
+    public static TableName getTableName(byte[] tableNameBytes) {
+        return TableName.valueOf(tableNameBytes);
+    }
+}
diff --git a/pom.xml b/pom.xml
index 214d65b..c3c454b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,10 +23,12 @@
   </organization>
 
   <modules>
-    <module>phoenix-flume</module>
-    <module>phoenix-kafka</module>
-    <module>phoenix-pig</module>
-    <module>phoenix-spark</module>
+    <module>phoenix4-compat</module>
+    <module>phoenix5-compat</module>
+    <module>phoenix-flume-base</module>
+    <module>phoenix-pig-base</module>
+    <module>phoenix-kafka-base</module>
+    <module>phoenix-spark-base</module>
     <module>phoenix-hive</module>
     <module>phoenix-hive3</module>
   </modules>
@@ -37,7 +39,6 @@
       <url>https://repository.apache.org/content/repositories/releases/</url>
     </repository>
   </repositories>
-
   <parent>
     <groupId>org.apache</groupId>
     <artifactId>apache</artifactId>
@@ -52,10 +53,17 @@
 
   <properties>
     <!-- Phoenix Version -->
-    <phoenix.version>4.15.0-HBase-1.4</phoenix.version>
+    <phoenix-four.version>4.15.0-HBase-1.4</phoenix-four.version>
+    <phoenix-five.version>5.1.0-SNAPSHOT</phoenix-five.version>
     <!-- Hadoop Versions -->
-    <hbase.version>1.4.0</hbase.version>
+    <hbase-one.version>1.4.0</hbase-one.version>
+    <hbase-two.version>2.2.4</hbase-two.version>
     <hadoop-two.version>2.7.5</hadoop-two.version>
+    <hadoop-three.version>3.0.3</hadoop-three.version>
+
+    <phoenix.version>${phoenix-four.version}</phoenix.version>
+    <hbase.version>${hbase-one.version}</hbase.version>
+    <hadoop.version>${hadoop-two.version}</hadoop.version>
 
     <!-- General Properties -->
     <test.output.tofile>true</test.output.tofile>
@@ -65,7 +73,6 @@
 
     <!-- Dependency versions -->
     <hive.version>1.2.1</hive.version>
-    <hadoop.version>2.7.5</hadoop.version>
     <pig.version>0.13.0</pig.version>
     <log4j.version>1.2.17</log4j.version>
     <disruptor.version>3.3.6</disruptor.version>
@@ -79,13 +86,14 @@
     <scala.binary.version>2.11</scala.binary.version>
     <tephra.version>0.15.0-incubating</tephra.version>
     <mockito-all.version>1.8.5</mockito-all.version>
-    <junit.version>4.12</junit.version>   
+    <junit.version>4.12</junit.version>
 
     <!-- Plugin versions -->
     <maven-eclipse-plugin.version>2.9</maven-eclipse-plugin.version>
     
<maven-build-helper-plugin.version>1.9.1</maven-build-helper-plugin.version>
     <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
     <maven-failsafe-plugin.version>2.22.2</maven-failsafe-plugin.version>
+    <maven-shade-plugin.version>2.4.3</maven-shade-plugin.version>
 
     <maven-dependency-plugin.version>2.1</maven-dependency-plugin.version>
     <maven.assembly.version>2.5.2</maven.assembly.version>
@@ -101,6 +109,7 @@
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
     <curator.version>2.12.0</curator.version>
 
+    <shaded.package>org.apache.phoenix.shaded</shaded.package>
   </properties>
 
   <build>
@@ -317,7 +326,7 @@
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-shade-plugin</artifactId>
-          <version>2.4.3</version>
+          <version>${maven-shade-plugin.version}</version>
         </plugin>
         <plugin>
           <!-- Allows us to get the apache-ds bundle artifacts -->
@@ -484,24 +493,34 @@
       </dependency>
       <dependency>
         <groupId>org.apache.phoenix</groupId>
-        <artifactId>phoenix-flume</artifactId>
+        <artifactId>phoenix4-flume</artifactId>
         <version>${project.version}</version>
       </dependency>
       <dependency>
         <groupId>org.apache.phoenix</groupId>
-        <artifactId>phoenix-kafka</artifactId>
+        <artifactId>phoenix4-kafka</artifactId>
         <version>${project.version}</version>
       </dependency>
       <dependency>
         <groupId>org.apache.phoenix</groupId>
-        <artifactId>phoenix-pig</artifactId>
+        <artifactId>phoenix4-pig</artifactId>
         <version>${project.version}</version>
       </dependency>
       <dependency>
         <groupId>org.apache.phoenix</groupId>
-        <artifactId>phoenix-spark</artifactId>
+        <artifactId>phoenix4-spark</artifactId>
         <version>${project.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.phoenix</groupId>
+        <artifactId>phoenix4-compat</artifactId>
+        <version>6.0.0-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.phoenix</groupId>
+        <artifactId>phoenix5-compat</artifactId>
+        <version>6.0.0-SNAPSHOT</version>
+      </dependency>
 
       <!-- HBase dependencies -->
       <dependency>

Reply via email to