diff --git a/pom.xml b/pom.xml
index 894e8ab..24add69 100644
--- a/pom.xml
+++ b/pom.xml
@@ -237,6 +237,19 @@
javax.inject
javax.inject
+
+ org.apache.hadoop
+ hadoop-common
+ 2.7.1
+ provided
+ true
+
+
+ com.google.code.findbugs
+ jsr305
+
+
+
diff --git a/src/main/java/com/teradata/tpcds/Scaling.java b/src/main/java/com/teradata/tpcds/Scaling.java
index 57933ab..ac45542 100644
--- a/src/main/java/com/teradata/tpcds/Scaling.java
+++ b/src/main/java/com/teradata/tpcds/Scaling.java
@@ -17,6 +17,7 @@
import com.teradata.tpcds.distribution.CalendarDistribution;
import com.teradata.tpcds.type.Date;
+import java.io.Serializable;
import java.util.EnumMap;
import java.util.Map;
@@ -39,7 +40,7 @@
import static com.teradata.tpcds.type.Date.fromJulianDays;
import static com.teradata.tpcds.type.Date.isLeapYear;
-public class Scaling
+public class Scaling implements Serializable
{
private final double scale;
private final Map tableToRowCountMap = new EnumMap<>(Table.class);
diff --git a/src/main/java/com/teradata/tpcds/Session.java b/src/main/java/com/teradata/tpcds/Session.java
index a1477dd..5bbbc9b 100644
--- a/src/main/java/com/teradata/tpcds/Session.java
+++ b/src/main/java/com/teradata/tpcds/Session.java
@@ -14,6 +14,10 @@
package com.teradata.tpcds;
+import org.apache.hadoop.conf.Configuration;
+
+import java.io.IOException;
+import java.io.Serializable;
import java.util.Optional;
import static com.teradata.tpcds.Options.DEFAULT_DIRECTORY;
@@ -26,12 +30,12 @@
import static com.teradata.tpcds.Options.DEFAULT_SEPARATOR;
import static com.teradata.tpcds.Options.DEFAULT_SUFFIX;
-public class Session
+public class Session implements Serializable
{
private final Scaling scaling;
private final String targetDirectory;
private final String suffix;
- private final Optional table;
+ private final Table table;
private final String nullString;
private final char separator;
private final boolean doNotTerminate;
@@ -39,6 +43,7 @@ public class Session
private final int parallelism;
private final int chunkNumber;
private final boolean overwrite;
+ private final SerializableHadoopConfiguration hadoopConfig;
public Session(double scale, String targetDirectory, String suffix, Optional table, String nullString, char separator, boolean doNotTerminate, boolean noSexism, int parallelism, boolean overwrite)
{
@@ -46,11 +51,19 @@ public Session(double scale, String targetDirectory, String suffix, Optional table, String nullString, char separator, boolean doNotTerminate, boolean noSexism, int parallelism, int chunkNumber, boolean overwrite)
+ {
+ this(scale, targetDirectory, suffix, table, nullString, separator, doNotTerminate, noSexism, parallelism,
+ chunkNumber, overwrite, null);
+ }
+
+ public Session(double scale, String targetDirectory, String suffix, Optional table, String nullString,
+ char separator, boolean doNotTerminate, boolean noSexism, int parallelism, int chunkNumber,
+ boolean overwrite, Configuration hadoopConfig)
{
this.scaling = new Scaling(scale);
this.targetDirectory = targetDirectory;
this.suffix = suffix;
- this.table = table;
+ this.table = table.isPresent() ? table.get() : null;
this.nullString = nullString;
this.separator = separator;
this.doNotTerminate = doNotTerminate;
@@ -58,6 +71,7 @@ public Session(double scale, String targetDirectory, String suffix, Optional