Skip to content

Commit 9912cd7

Browse files
author
Harish Butani
committed
LocalExecutor works outside of MiniCluster.
1 parent aca3f28 commit 9912cd7

File tree

6 files changed

+113
-157
lines changed

6 files changed

+113
-157
lines changed

windowing/src/main/java/com/sap/hadoop/windowing/Constants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public class Constants
4747
public static final String WINDOWING_JOB_QUERY_FILE = "windowing.job.query.file";
4848

4949
public static final String WINDOWING_TEST_MODE = "windowing.test.mode";
50+
public static final String WINDOWING_TEST_LOCAL_MODE = "windowing.test.local.mode";
51+
public static final String WINDOWING_TEST_DATA_DIR = "windowing.test.data.dir";
5052

5153
public static final String WINDOWING_OUTPUT_QUERY_RESULT = "windowing.output.query.result";
5254

windowing/src/main/java/com/sap/hadoop/windowing/io/IOUtils.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import java.io.IOException;
1010
import java.io.PrintStream;
11+
import java.net.URI;
1112
import java.util.Properties;
1213

1314
import org.apache.commons.logging.Log;
@@ -34,6 +35,7 @@
3435
import org.apache.hadoop.mapred.TextInputFormat;
3536

3637
import com.sap.hadoop.HiveUtils;
38+
import com.sap.hadoop.windowing.Constants;
3739
import com.sap.hadoop.windowing.WindowingException;
3840
import com.sap.hadoop.windowing.runtime2.Partition;
3941

@@ -199,6 +201,19 @@ public static Path makeQualified(Path p, Configuration conf) throws IOException
199201
{
200202
FileSystem fs = FileSystem.get(conf);
201203
p = new Path(p.toUri().getPath()).makeQualified(fs);
204+
return convertToTest(p, conf);
205+
}
206+
207+
public static Path convertToTest(Path p, Configuration conf)
208+
{
209+
if (conf.getBoolean(Constants.WINDOWING_TEST_LOCAL_MODE, false))
210+
{
211+
String testDataDir = conf.get(Constants.WINDOWING_TEST_DATA_DIR);
212+
URI uri = p.toUri();
213+
String location = uri.getPath();
214+
location = location.replace("/user/hive/warehouse", testDataDir);
215+
return new Path(location);
216+
}
202217
return p;
203218
}
204219

windowing/src/main/java/com/sap/hadoop/windowing/runtime2/LocalExecutor.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@
55
import org.apache.hadoop.io.Writable;
66

77
import com.sap.hadoop.windowing.WindowingException;
8-
import com.sap.hadoop.windowing.functions2.TableFunctionEvaluator;
98
import com.sap.hadoop.windowing.io.IOUtils;
109
import com.sap.hadoop.windowing.io.WindowingInput;
1110
import com.sap.hadoop.windowing.query2.definition.QueryDef;
12-
import com.sap.hadoop.windowing.query2.definition.TableFuncDef;
1311
import com.sap.hadoop.windowing.query2.specification.HiveTableSpec;
1412
import com.sap.hadoop.windowing.query2.translate.QueryTranslationInfo;
1513

@@ -31,10 +29,6 @@ public void execute(QueryDef qDef, WindowingShell wShell) throws WindowingExcept
3129
{
3230
QueryTranslationInfo tInfo = qDef.getTranslationInfo();
3331
HiveTableSpec hvTblSpec = qDef.getInput().getHiveTableSpec();
34-
TableFuncDef tabDef = (TableFuncDef) qDef.getInput();
35-
TableFunctionEvaluator tEval = tabDef.getFunction();
36-
String partClassName = tEval.getPartitionClass();
37-
int partMemSize = tEval.getPartitionMemSize();
3832

3933
WindowingInput wIn = IOUtils.createTableWindowingInput(hvTblSpec.getDbName(), hvTblSpec.getTableName(), tInfo.getHiveCfg());
4034
//Partition p = IOUtils.createPartition(partClassName, partMemSize, wIn);

windowing/src/test/java/com/sap/hadoop/windowing/runtime2/LocalExecutorTest.java

Lines changed: 0 additions & 151 deletions
This file was deleted.
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.sap.hadoop.windowing.runtime2;
2+
3+
//import junit.framework.Assert;
4+
5+
import org.junit.Test;
6+
7+
import com.sap.hadoop.windowing.WindowingException;
8+
import com.sap.hadoop.windowing.testutils.LocalExecutorTest;
9+
10+
public class LocalExecutorTests extends LocalExecutorTest
11+
{
12+
@Test
13+
public void test1() throws WindowingException
14+
{
15+
wshell.execute("select p_mfgr,p_name, p_size,\n" +
16+
"rank() as r,\n" +
17+
"denserank() as dr\n" +
18+
"from part_tiny\n" +
19+
"partition by p_mfgr\n" +
20+
"order by p_mfgr\n" +
21+
"window w1 as rows between 2 preceding and 2 following\n" +
22+
"into path='/tmp/wout2'\n" +
23+
"serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'\n" +
24+
"with serdeproperties('field.delim'=',')\n" +
25+
"format 'org.apache.hadoop.mapred.TextOutputFormat'", outPrinter);
26+
27+
String r = outStream.toString();
28+
r = r.replace("\r\n", "\n");
29+
System.out.println(r);
30+
//String e = WindowingTestsFactory.BASIC.getResult().replaceAll("\t", ",");
31+
//Assert.assertEquals(r, e);
32+
}
33+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package com.sap.hadoop.windowing.testutils;
2+
3+
import java.io.ByteArrayOutputStream;
4+
import java.io.PrintStream;
5+
6+
import org.apache.hadoop.conf.Configuration;
7+
import org.apache.hadoop.hive.conf.HiveConf;
8+
import org.junit.Before;
9+
import org.junit.BeforeClass;
10+
11+
import com.sap.hadoop.windowing.Constants;
12+
import com.sap.hadoop.windowing.query2.translate.Translator;
13+
import com.sap.hadoop.windowing.runtime2.LocalExecutor;
14+
import com.sap.hadoop.windowing.runtime2.QueryOutputPrinter;
15+
import com.sap.hadoop.windowing.runtime2.WindowingShell;
16+
17+
public class LocalExecutorTest
18+
{
19+
protected static WindowingShell wshell;
20+
protected static String basedir = "src/test/java/data";
21+
protected static ByteArrayOutputStream outStream;
22+
protected static QueryOutputPrinter outPrinter;
23+
24+
@BeforeClass
25+
public static void setupClass()
26+
{
27+
outStream = new ByteArrayOutputStream();
28+
29+
Configuration conf = HOME();
30+
conf.setBoolean(Constants.WINDOWING_TEST_LOCAL_MODE, true);
31+
conf.set(Constants.WINDOWING_TEST_DATA_DIR, basedir);
32+
HiveConf hCfg = new HiveConf(conf, conf.getClass());
33+
34+
wshell = new WindowingShell(hCfg, new Translator(), new LocalExecutor(new PrintStream(outStream)));
35+
//wshell.hiveQryExec = new ThriftBasedHiveQueryExecutor(conf)
36+
outPrinter = null;
37+
}
38+
39+
@Before
40+
public void setup()
41+
{
42+
outStream.reset();
43+
}
44+
45+
public static Configuration HOME()
46+
{
47+
Configuration conf = new Configuration();
48+
49+
//conf.set("fs.default.name", "hdfs://localhost:8020");
50+
//conf.set("mapred.job.tracker", "localhost:8021");
51+
52+
//conf.set("hive.metastore.uris", "thrift://localhost:9083");
53+
conf.set("javax.jdo.option.ConnectionURL",
54+
"jdbc:mysql://localhost/hivems?createDatabaseIfNotExist=true");
55+
conf.set("javax.jdo.option.ConnectionDriverName", "com.mysql.jdbc.Driver");
56+
conf.set("javax.jdo.option.ConnectionUserName", "hiveuser");
57+
conf.set("javax.jdo.option.ConnectionPassword", "hive");
58+
conf.set("hive.metastore.local", "true");
59+
60+
61+
return conf;
62+
}
63+
}

0 commit comments

Comments
 (0)