You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by lu...@apache.org on 2015/06/08 20:22:24 UTC
[01/11] incubator-kylin git commit: KYLIN-758 For HortonWorks Sandbox
2.2, these two ports are not forwad.. (Rebased from
https://github.com/apache/incubator-kylin/pull/4,
contributed by SleepyThread & akashm)
Repository: incubator-kylin
Updated Branches:
refs/heads/0.7 48823ca83 -> 724ccf96d
KYLIN-758 For HortonWorks Sandbox 2.2, these two ports are not forwad.. (Rebased from https://github.com/apache/incubator-kylin/pull/4, contributed by SleepyThread & akashm)
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/4ab18c68
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/4ab18c68
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/4ab18c68
Branch: refs/heads/0.7
Commit: 4ab18c689726634ec2efa20214804951b89ec5f8
Parents: f5dc6b9
Author: Li, Yang <ya...@ebay.com>
Authored: Thu Jun 4 16:19:35 2015 +0800
Committer: Li, Yang <ya...@ebay.com>
Committed: Thu Jun 4 16:19:35 2015 +0800
----------------------------------------------------------------------
docs/Installation/Hadoop Environment.md | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/4ab18c68/docs/Installation/Hadoop Environment.md
----------------------------------------------------------------------
diff --git a/docs/Installation/Hadoop Environment.md b/docs/Installation/Hadoop Environment.md
index 2e72527..5ee12fe 100644
--- a/docs/Installation/Hadoop Environment.md
+++ b/docs/Installation/Hadoop Environment.md
@@ -18,4 +18,9 @@ Use ambari helps to launch hadoop:
With both command successfully run you can go to ambari homepage at <http://your_sandbox_ip:8080> (user:admin,password:admin) to check everything's status. **By default hortonworks ambari disables Hbase, you'll need manually start the `Hbase` service at ambari homepage.**
-![start hbase in ambari](https://raw.githubusercontent.com/KylinOLAP/kylinolap.github.io/master/docs/installation/starthbase.png)
\ No newline at end of file
+![start hbase in ambari](https://raw.githubusercontent.com/KylinOLAP/kylinolap.github.io/master/docs/installation/starthbase.png)
+
+**Additonal Info for setting up HortonWorks Sandbox on Virtual Box**
+
+ Please make sure Hbase Master port [Default 60000] and Zookeeper [Default 2181] is forwarded to Host OS.
+
\ No newline at end of file
[05/11] incubator-kylin git commit: added accepts json request header
so RM responds with JSON rather than XML
Posted by lu...@apache.org.
added accepts json request header so RM responds with JSON rather than XML
Signed-off-by: Li, Yang <ya...@ebay.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/fc838d3e
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/fc838d3e
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/fc838d3e
Branch: refs/heads/0.7
Commit: fc838d3e919d1224ba1a93897ae3440b3abaa79a
Parents: 02562c0
Author: c-horn <ch...@gmail.com>
Authored: Fri May 29 14:48:24 2015 -0400
Committer: Li, Yang <ya...@ebay.com>
Committed: Thu Jun 4 17:21:48 2015 +0800
----------------------------------------------------------------------
.../main/java/org/apache/kylin/job/tools/HadoopStatusGetter.java | 2 ++
1 file changed, 2 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/fc838d3e/job/src/main/java/org/apache/kylin/job/tools/HadoopStatusGetter.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/tools/HadoopStatusGetter.java b/job/src/main/java/org/apache/kylin/job/tools/HadoopStatusGetter.java
index 2a9abf9..b9ceee0 100644
--- a/job/src/main/java/org/apache/kylin/job/tools/HadoopStatusGetter.java
+++ b/job/src/main/java/org/apache/kylin/job/tools/HadoopStatusGetter.java
@@ -72,6 +72,8 @@ public class HadoopStatusGetter {
}
HttpMethod get = new GetMethod(url);
+ get.addRequestHeader("accept", "application/json");
+
try {
client.executeMethod(get);
[08/11] incubator-kylin git commit: KYLIN-815
IPartitionConditionBuilder, flexible range condition to match hive partitions
Posted by lu...@apache.org.
KYLIN-815 IPartitionConditionBuilder, flexible range condition to match hive partitions
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/1dc1a370
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/1dc1a370
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/1dc1a370
Branch: refs/heads/0.7
Commit: 1dc1a370dc0707925757d7dff4e2f05bf65b3be5
Parents: d2ae503
Author: Yang Li <li...@apache.org>
Authored: Sun Jun 7 16:35:34 2015 +0800
Committer: Yang Li <li...@apache.org>
Committed: Sun Jun 7 16:35:34 2015 +0800
----------------------------------------------------------------------
.../org/apache/kylin/common/util/ClassUtil.java | 7 ++
.../apache/kylin/common/util/DateFormat.java | 101 +++++++++++++++++++
.../apache/kylin/dict/DateStrDictionary.java | 66 +-----------
.../kylin/invertedindex/index/TableRecord.java | 9 +-
.../org/apache/kylin/job/JoinedFlatTable.java | 50 +++------
.../hadoop/hive/CubeJoinedFlatTableDesc.java | 12 ++-
.../kylin/metadata/model/PartitionDesc.java | 79 +++++++++++----
.../kylin/storage/hbase/HBaseKeyRange.java | 14 +--
.../org/apache/kylin/storage/tuple/Tuple.java | 6 +-
9 files changed, 209 insertions(+), 135 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/1dc1a370/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java b/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
index b474c58..4703e86 100644
--- a/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
+++ b/common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
@@ -50,4 +50,11 @@ public class ClassUtil {
return (Class<? extends T>) Class.forName(name);
}
+ public static Object newInstance(String clz) {
+ try {
+ return forName(clz, Object.class).newInstance();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/1dc1a370/common/src/main/java/org/apache/kylin/common/util/DateFormat.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/kylin/common/util/DateFormat.java b/common/src/main/java/org/apache/kylin/common/util/DateFormat.java
new file mode 100644
index 0000000..7aca923
--- /dev/null
+++ b/common/src/main/java/org/apache/kylin/common/util/DateFormat.java
@@ -0,0 +1,101 @@
+/*
+ * 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.kylin.common.util;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Map;
+import java.util.TimeZone;
+import java.util.concurrent.ConcurrentHashMap;
+
+public class DateFormat {
+
+ public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
+ public static final String DEFAULT_DATETIME_PATTERN_WITHOUT_MILLISECONDS = "yyyy-MM-dd HH:mm:ss";
+ public static final String DEFAULT_DATETIME_PATTERN_WITH_MILLISECONDS = "yyyy-MM-dd HH:mm:ss.SSS";
+
+ static final private Map<String, ThreadLocal<SimpleDateFormat>> threadLocalMap = new ConcurrentHashMap<String, ThreadLocal<SimpleDateFormat>>();
+
+ public static SimpleDateFormat getDateFormat(String datePattern) {
+ ThreadLocal<SimpleDateFormat> formatThreadLocal = threadLocalMap.get(datePattern);
+ if (formatThreadLocal == null) {
+ threadLocalMap.put(datePattern, formatThreadLocal = new ThreadLocal<SimpleDateFormat>());
+ }
+ SimpleDateFormat format = formatThreadLocal.get();
+ if (format == null) {
+ format = new SimpleDateFormat(datePattern);
+ format.setTimeZone(TimeZone.getTimeZone("GMT")); // NOTE: this must be GMT to calculate epoch date correctly
+ formatThreadLocal.set(format);
+ }
+ return format;
+ }
+
+ public static String formatToDateStr(long millis) {
+ return getDateFormat(DEFAULT_DATE_PATTERN).format(new Date(millis));
+ }
+
+ public static String formatToTimeStr(long millis) {
+ return getDateFormat(DEFAULT_DATETIME_PATTERN_WITH_MILLISECONDS).format(new Date(millis));
+ }
+
+ public static String dateToString(Date date) {
+ return dateToString(date, DEFAULT_DATETIME_PATTERN_WITHOUT_MILLISECONDS);
+ }
+
+ public static String dateToString(Date date, String pattern) {
+ return getDateFormat(pattern).format(date);
+ }
+
+ public static Date stringToDate(String str) {
+ return stringToDate(str, DEFAULT_DATE_PATTERN);
+ }
+
+ public static Date stringToDate(String str, String pattern) {
+ Date date = null;
+ try {
+ date = getDateFormat(pattern).parse(str);
+ } catch (ParseException e) {
+ throw new IllegalArgumentException("'" + str + "' is not a valid date of pattern '" + pattern + "'", e);
+ }
+ return date;
+ }
+
+ public static long stringToMillis(String str) {
+ if (isAllDigits(str)) {
+ return Long.parseLong(str);
+ } else if (str.length() == 10) {
+ return stringToDate(str, DEFAULT_DATE_PATTERN).getTime();
+ } else if (str.length() == 19) {
+ return stringToDate(str, DEFAULT_DATETIME_PATTERN_WITHOUT_MILLISECONDS).getTime();
+ } else if (str.length() == 23) {
+ return stringToDate(str, DEFAULT_DATETIME_PATTERN_WITH_MILLISECONDS).getTime();
+ } else {
+ throw new IllegalArgumentException("there is no valid date pattern for:" + str);
+ }
+ }
+
+ private static boolean isAllDigits(String str) {
+ for (int i = 0, n = str.length(); i < n; i++) {
+ if (Character.isDigit(str.charAt(i)) == false)
+ return false;
+ }
+ return true;
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/1dc1a370/dictionary/src/main/java/org/apache/kylin/dict/DateStrDictionary.java
----------------------------------------------------------------------
diff --git a/dictionary/src/main/java/org/apache/kylin/dict/DateStrDictionary.java b/dictionary/src/main/java/org/apache/kylin/dict/DateStrDictionary.java
index 7cace15..ab4915a 100644
--- a/dictionary/src/main/java/org/apache/kylin/dict/DateStrDictionary.java
+++ b/dictionary/src/main/java/org/apache/kylin/dict/DateStrDictionary.java
@@ -23,14 +23,10 @@ import java.io.DataOutput;
import java.io.IOException;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
import java.util.Date;
-import java.util.Map;
-import java.util.TimeZone;
-import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.lang.StringUtils;
+import org.apache.kylin.common.util.DateFormat;
/**
* A dictionary for date string (date only, no time).
@@ -44,62 +40,8 @@ import org.apache.commons.lang.StringUtils;
*/
public class DateStrDictionary extends Dictionary<String> {
- static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";
- static final String DEFAULT_DATETIME_PATTERN_WITHOUT_MILLISECONDS = "yyyy-MM-dd HH:mm:ss";
- static final String DEFAULT_DATETIME_PATTERN_WITH_MILLISECONDS = "yyyy-MM-dd HH:mm:ss.SSS";
-
static final int ID_9999_12_31 = 3652426; // assume 0 based
- static final private Map<String, ThreadLocal<SimpleDateFormat>> threadLocalMap = new ConcurrentHashMap<String, ThreadLocal<SimpleDateFormat>>();
-
- static SimpleDateFormat getDateFormat(String datePattern) {
- ThreadLocal<SimpleDateFormat> formatThreadLocal = threadLocalMap.get(datePattern);
- if (formatThreadLocal == null) {
- threadLocalMap.put(datePattern, formatThreadLocal = new ThreadLocal<SimpleDateFormat>());
- }
- SimpleDateFormat format = formatThreadLocal.get();
- if (format == null) {
- format = new SimpleDateFormat(datePattern);
- format.setTimeZone(TimeZone.getTimeZone("GMT")); // NOTE: this must be GMT to calculate epoch date correctly
- formatThreadLocal.set(format);
- }
- return format;
- }
-
- public static String dateToString(Date date) {
- return dateToString(date, DEFAULT_DATETIME_PATTERN_WITHOUT_MILLISECONDS);
- }
-
- public static String dateToString(Date date, String pattern) {
- return getDateFormat(pattern).format(date);
- }
-
- public static Date stringToDate(String str) {
- return stringToDate(str, DEFAULT_DATE_PATTERN);
- }
-
- public static Date stringToDate(String str, String pattern) {
- Date date = null;
- try {
- date = getDateFormat(pattern).parse(str);
- } catch (ParseException e) {
- throw new IllegalArgumentException("'" + str + "' is not a valid date of pattern '" + pattern + "'", e);
- }
- return date;
- }
-
- public static long stringToMillis(String str) {
- if (str.length() == 10) {
- return stringToDate(str, DEFAULT_DATE_PATTERN).getTime();
- } else if (str.length() == 19) {
- return stringToDate(str, DEFAULT_DATETIME_PATTERN_WITHOUT_MILLISECONDS).getTime();
- } else if (str.length() == 23) {
- return stringToDate(str, DEFAULT_DATETIME_PATTERN_WITH_MILLISECONDS).getTime();
- } else {
- throw new IllegalArgumentException("there is no valid date pattern for:" + str);
- }
- }
-
// ============================================================================
private String pattern;
@@ -107,7 +49,7 @@ public class DateStrDictionary extends Dictionary<String> {
private int maxId;
public DateStrDictionary() {
- init(DEFAULT_DATE_PATTERN, 0);
+ init(DateFormat.DEFAULT_DATE_PATTERN, 0);
}
public DateStrDictionary(String datePattern, int baseId) {
@@ -147,7 +89,7 @@ public class DateStrDictionary extends Dictionary<String> {
@Override
final protected int getIdFromValueImpl(String value, int roundFlag) {
- Date date = stringToDate(value, pattern);
+ Date date = DateFormat.stringToDate(value, pattern);
int id = calcIdFromSeqNo(getNumOfDaysSince0000(date));
if (id < baseId || id > maxId)
throw new IllegalArgumentException("'" + value + "' encodes to '" + id + "' which is out of range [" + baseId + "," + maxId + "]");
@@ -160,7 +102,7 @@ public class DateStrDictionary extends Dictionary<String> {
if (id < baseId || id > maxId)
throw new IllegalArgumentException("ID '" + id + "' is out of range [" + baseId + "," + maxId + "]");
Date d = getDateFromNumOfDaysSince0000(calcSeqNoFromId(id));
- return dateToString(d, pattern);
+ return DateFormat.dateToString(d, pattern);
}
private int getNumOfDaysSince0000(Date d) {
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/1dc1a370/invertedindex/src/main/java/org/apache/kylin/invertedindex/index/TableRecord.java
----------------------------------------------------------------------
diff --git a/invertedindex/src/main/java/org/apache/kylin/invertedindex/index/TableRecord.java b/invertedindex/src/main/java/org/apache/kylin/invertedindex/index/TableRecord.java
index 3b8d969..d10554b 100644
--- a/invertedindex/src/main/java/org/apache/kylin/invertedindex/index/TableRecord.java
+++ b/invertedindex/src/main/java/org/apache/kylin/invertedindex/index/TableRecord.java
@@ -18,13 +18,14 @@
package org.apache.kylin.invertedindex.index;
-import com.google.common.collect.Lists;
-import org.apache.kylin.dict.DateStrDictionary;
+import java.util.List;
+
import org.apache.commons.lang.ObjectUtils;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
import org.apache.hadoop.io.LongWritable;
+import org.apache.kylin.common.util.DateFormat;
-import java.util.List;
+import com.google.common.collect.Lists;
/**
* @author yangli9, honma
@@ -66,7 +67,7 @@ public class TableRecord implements Cloneable {
public long getTimestamp() {
String str = getValueString(info.getTimestampColumn());
- return DateStrDictionary.stringToMillis(str);
+ return DateFormat.stringToMillis(str);
}
public int length(int col) {
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/1dc1a370/job/src/main/java/org/apache/kylin/job/JoinedFlatTable.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/JoinedFlatTable.java b/job/src/main/java/org/apache/kylin/job/JoinedFlatTable.java
index 7e714d0..db6dd0e 100644
--- a/job/src/main/java/org/apache/kylin/job/JoinedFlatTable.java
+++ b/job/src/main/java/org/apache/kylin/job/JoinedFlatTable.java
@@ -20,19 +20,15 @@ package org.apache.kylin.job;
import java.io.File;
import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
-import org.apache.kylin.cube.model.DimensionDesc;
-import org.w3c.dom.Document;
-import org.w3c.dom.NodeList;
-import org.xml.sax.SAXException;
-
-import org.apache.kylin.common.util.StringUtil;
import org.apache.kylin.cube.CubeSegment;
import org.apache.kylin.cube.model.CubeDesc;
import org.apache.kylin.job.engine.JobEngineConfig;
@@ -43,7 +39,11 @@ import org.apache.kylin.job.hadoop.hive.SqlHiveDataTypeMapping;
import org.apache.kylin.metadata.model.DataModelDesc;
import org.apache.kylin.metadata.model.JoinDesc;
import org.apache.kylin.metadata.model.LookupDesc;
+import org.apache.kylin.metadata.model.PartitionDesc;
import org.apache.kylin.metadata.model.TblColRef;
+import org.w3c.dom.Document;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
/**
* @author George Song (ysong1)
@@ -144,7 +144,7 @@ public class JoinedFlatTable {
return sql.toString();
}
- private static Map buildTableAliasMap(DataModelDesc dataModelDesc) {
+ private static Map<String, String> buildTableAliasMap(DataModelDesc dataModelDesc) {
Map<String, String> tableAliasMap = new HashMap<String, String>();
tableAliasMap.put(dataModelDesc.getFactTable().toUpperCase(), FACT_TABLE_ALIAS);
@@ -207,36 +207,23 @@ public class JoinedFlatTable {
whereBuilder.append("WHERE");
CubeDesc cubeDesc = desc.getCubeDesc();
+ DataModelDesc model = cubeDesc.getModel();
- if (cubeDesc.getModel().getFilterCondition() != null && cubeDesc.getModel().getFilterCondition().equals("") == false) {
- whereBuilder.append(" (").append(cubeDesc.getModel().getFilterCondition()).append(") ");
+ if (model.getFilterCondition() != null && model.getFilterCondition().equals("") == false) {
+ whereBuilder.append(" (").append(model.getFilterCondition()).append(") ");
hasCondition = true;
}
CubeSegment cubeSegment = desc.getCubeSegment();
if (null != cubeSegment) {
+ PartitionDesc partDesc = model.getPartitionDesc();
long dateStart = cubeSegment.getDateRangeStart();
long dateEnd = cubeSegment.getDateRangeEnd();
if (!(dateStart == 0 && dateEnd == Long.MAX_VALUE)) {
- String partitionColumnName = cubeDesc.getModel().getPartitionDesc().getPartitionDateColumn();
- int indexOfDot = partitionColumnName.lastIndexOf(".");
-
- // convert to use table alias;
- if (indexOfDot > 0) {
- String partitionTableName = partitionColumnName.substring(0, indexOfDot);
- String columeOnly = partitionColumnName.substring(indexOfDot);
- String partitionTableAlias = tableAliasMap.get(partitionTableName);
- partitionColumnName = partitionTableAlias + columeOnly;
- }
-
whereBuilder.append(hasCondition ? " AND (" : " (");
- if (dateStart > 0) {
- whereBuilder.append(partitionColumnName + " >= '" + formatDateTimeInWhereClause(dateStart) + "' ");
- whereBuilder.append("AND ");
- }
- whereBuilder.append(partitionColumnName + " < '" + formatDateTimeInWhereClause(dateEnd) + "'");
+ whereBuilder.append(partDesc.getPartitionConditionBuilder().buildDateRangeCondition(partDesc, dateStart, dateEnd, tableAliasMap));
whereBuilder.append(")\n");
hasCondition = true;
}
@@ -247,15 +234,6 @@ public class JoinedFlatTable {
}
}
- private static String formatDateTimeInWhereClause(long datetime) {
- SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- f.setTimeZone(TimeZone.getTimeZone("GMT"));
- Date date = new Date(datetime);
- String str = f.format(date);
- // note "2014-10-01" >= "2014-10-01 00:00:00" is FALSE
- return StringUtil.dropSuffix(str, " 00:00:00");
- }
-
private static String colName(String canonicalColName) {
return canonicalColName.replace(".", "_");
}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/1dc1a370/job/src/main/java/org/apache/kylin/job/hadoop/hive/CubeJoinedFlatTableDesc.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/hadoop/hive/CubeJoinedFlatTableDesc.java b/job/src/main/java/org/apache/kylin/job/hadoop/hive/CubeJoinedFlatTableDesc.java
index a972692..ae66a18 100644
--- a/job/src/main/java/org/apache/kylin/job/hadoop/hive/CubeJoinedFlatTableDesc.java
+++ b/job/src/main/java/org/apache/kylin/job/hadoop/hive/CubeJoinedFlatTableDesc.java
@@ -18,18 +18,20 @@
package org.apache.kylin.job.hadoop.hive;
-import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
import org.apache.kylin.common.util.BytesSplitter;
import org.apache.kylin.cube.CubeSegment;
import org.apache.kylin.cube.cuboid.Cuboid;
import org.apache.kylin.cube.model.CubeDesc;
-import org.apache.kylin.cube.model.DimensionDesc;
-import org.apache.kylin.metadata.model.*;
+import org.apache.kylin.metadata.model.DataModelDesc;
+import org.apache.kylin.metadata.model.FunctionDesc;
+import org.apache.kylin.metadata.model.MeasureDesc;
+import org.apache.kylin.metadata.model.TblColRef;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
/**
* @author George Song (ysong1)
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/1dc1a370/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
index cf0a8e3..73db41f 100644
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
+++ b/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
@@ -20,15 +20,16 @@ package org.apache.kylin.metadata.model;
import java.util.Map;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.kylin.common.util.ClassUtil;
+import org.apache.kylin.common.util.DateFormat;
+import org.apache.kylin.common.util.StringSplitter;
+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.kylin.common.util.StringSplitter;
/**
- * @author xduo
- *
*/
@JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
public class PartitionDesc {
@@ -44,31 +45,37 @@ public class PartitionDesc {
private long partitionDateStart = 0L;
@JsonProperty("partition_type")
private PartitionType partitionType = PartitionType.APPEND;
+ @JsonProperty("partition_condition_builder")
+ private String partitionConditionBuilderClz = DefaultPartitionConditionBuilder.class.getName();
private TblColRef partitionDateColumnRef;
+ private IPartitionConditionBuilder partitionConditionBuilder;
public void init(Map<String, TableDesc> tables) {
- if (StringUtils.isNotEmpty(partitionDateColumn)) {
- partitionDateColumn = partitionDateColumn.toUpperCase();
+ if (StringUtils.isEmpty(partitionDateColumn))
+ return;
- String[] columns = StringSplitter.split(partitionDateColumn, ".");
+ partitionDateColumn = partitionDateColumn.toUpperCase();
- if (null != columns && columns.length == 3) {
- String tableName = columns[0].toUpperCase() + "." + columns[1].toUpperCase();
+ String[] columns = StringSplitter.split(partitionDateColumn, ".");
- TableDesc table = tables.get(tableName);
- ColumnDesc col = table.findColumnByName(columns[2]);
- if (col != null) {
- partitionDateColumnRef = new TblColRef(col);
- } else {
- throw new IllegalStateException("The column '" + partitionDateColumn + "' provided in 'partition_date_column' doesn't exist.");
- }
+ if (null != columns && columns.length == 3) {
+ String tableName = columns[0].toUpperCase() + "." + columns[1].toUpperCase();
+
+ TableDesc table = tables.get(tableName);
+ ColumnDesc col = table.findColumnByName(columns[2]);
+ if (col != null) {
+ partitionDateColumnRef = new TblColRef(col);
} else {
- throw new IllegalStateException("The 'partition_date_column' format is invalid: " + partitionDateColumn + ", it should be {db}.{table}.{column}.");
+ throw new IllegalStateException("The column '" + partitionDateColumn + "' provided in 'partition_date_column' doesn't exist.");
}
+ } else {
+ throw new IllegalStateException("The 'partition_date_column' format is invalid: " + partitionDateColumn + ", it should be {db}.{table}.{column}.");
}
+
+ partitionConditionBuilder = (IPartitionConditionBuilder) ClassUtil.newInstance(partitionConditionBuilderClz);
}
-
+
public boolean isPartitioned() {
return partitionDateColumnRef != null;
}
@@ -93,6 +100,10 @@ public class PartitionDesc {
return partitionType;
}
+ public IPartitionConditionBuilder getPartitionConditionBuilder() {
+ return partitionConditionBuilder;
+ }
+
public void setCubePartitionType(PartitionType partitionType) {
this.partitionType = partitionType;
}
@@ -101,4 +112,36 @@ public class PartitionDesc {
return partitionDateColumnRef;
}
+ // ============================================================================
+
+ public static interface IPartitionConditionBuilder {
+ String buildDateRangeCondition(PartitionDesc partDesc, long startInclusive, long endExclusive, Map<String, String> tableAlias);
+ }
+
+ public static class DefaultPartitionConditionBuilder implements IPartitionConditionBuilder {
+
+ @Override
+ public String buildDateRangeCondition(PartitionDesc partDesc, long startInclusive, long endExclusive, Map<String, String> tableAlias) {
+ String partitionColumnName = partDesc.getPartitionDateColumn();
+
+ // convert to use table alias
+ int indexOfDot = partitionColumnName.lastIndexOf(".");
+ if (indexOfDot > 0) {
+ String partitionTableName = partitionColumnName.substring(0, indexOfDot);
+ if (tableAlias != null && tableAlias.containsKey(partitionTableName))
+ partitionColumnName = tableAlias.get(partitionTableName) + partitionColumnName.substring(indexOfDot);
+ }
+
+ StringBuilder builder = new StringBuilder();
+
+ if (startInclusive > 0) {
+ builder.append(partitionColumnName + " >= '" + DateFormat.formatToDateStr(startInclusive) + "' ");
+ builder.append("AND ");
+ }
+ builder.append(partitionColumnName + " < '" + DateFormat.formatToDateStr(endExclusive) + "'");
+
+ return builder.toString();
+ }
+
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/1dc1a370/storage/src/main/java/org/apache/kylin/storage/hbase/HBaseKeyRange.java
----------------------------------------------------------------------
diff --git a/storage/src/main/java/org/apache/kylin/storage/hbase/HBaseKeyRange.java b/storage/src/main/java/org/apache/kylin/storage/hbase/HBaseKeyRange.java
index 7926b1d..cb2dce7 100644
--- a/storage/src/main/java/org/apache/kylin/storage/hbase/HBaseKeyRange.java
+++ b/storage/src/main/java/org/apache/kylin/storage/hbase/HBaseKeyRange.java
@@ -25,11 +25,9 @@ import java.util.Map;
import java.util.Set;
import org.apache.kylin.common.util.Bytes;
-import org.apache.kylin.common.util.Pair;
-
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
import org.apache.kylin.common.util.BytesUtil;
+import org.apache.kylin.common.util.DateFormat;
+import org.apache.kylin.common.util.Pair;
import org.apache.kylin.cube.CubeSegment;
import org.apache.kylin.cube.cuboid.Cuboid;
import org.apache.kylin.cube.kv.AbstractRowKeyEncoder;
@@ -37,9 +35,11 @@ import org.apache.kylin.cube.kv.FuzzyKeyEncoder;
import org.apache.kylin.cube.kv.FuzzyMaskEncoder;
import org.apache.kylin.cube.kv.RowConstants;
import org.apache.kylin.cube.model.CubeDesc;
-import org.apache.kylin.dict.DateStrDictionary;
import org.apache.kylin.metadata.model.TblColRef;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+
/**
*
* @author xjiang
@@ -145,10 +145,10 @@ public class HBaseKeyRange implements Comparable<HBaseKeyRange> {
private void initPartitionRange(ColumnValueRange dimRange) {
if (null != dimRange.getBeginValue()) {
- this.partitionColumnStartDate = DateStrDictionary.stringToDate(dimRange.getBeginValue()).getTime();
+ this.partitionColumnStartDate = DateFormat.stringToDate(dimRange.getBeginValue()).getTime();
}
if (null != dimRange.getEndValue()) {
- this.partitionColumnEndDate = DateStrDictionary.stringToDate(dimRange.getEndValue()).getTime();
+ this.partitionColumnEndDate = DateFormat.stringToDate(dimRange.getEndValue()).getTime();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/1dc1a370/storage/src/main/java/org/apache/kylin/storage/tuple/Tuple.java
----------------------------------------------------------------------
diff --git a/storage/src/main/java/org/apache/kylin/storage/tuple/Tuple.java b/storage/src/main/java/org/apache/kylin/storage/tuple/Tuple.java
index 96bdaa6..5023580 100644
--- a/storage/src/main/java/org/apache/kylin/storage/tuple/Tuple.java
+++ b/storage/src/main/java/org/apache/kylin/storage/tuple/Tuple.java
@@ -23,10 +23,10 @@ import java.util.Date;
import java.util.List;
import org.apache.kylin.common.util.Array;
+import org.apache.kylin.common.util.DateFormat;
import org.apache.kylin.cube.CubeManager;
import org.apache.kylin.cube.CubeSegment;
import org.apache.kylin.cube.model.CubeDesc.DeriveInfo;
-import org.apache.kylin.dict.DateStrDictionary;
import org.apache.kylin.dict.lookup.LookupStringTable;
import org.apache.kylin.metadata.model.TblColRef;
import org.apache.kylin.metadata.tuple.ITuple;
@@ -133,7 +133,7 @@ public class Tuple implements ITuple {
// TODO use data type enum instead of string comparison
if ("date".equals(dataType)) {
// convert epoch time
- Date dateValue = DateStrDictionary.stringToDate(strValue); // NOTE: forces GMT timezone
+ Date dateValue = DateFormat.stringToDate(strValue); // NOTE: forces GMT timezone
long millis = dateValue.getTime();
long days = millis / (1000 * 3600 * 24);
return Integer.valueOf((int) days); // Optiq expects Integer instead of Long. by honma
@@ -150,7 +150,7 @@ public class Tuple implements ITuple {
} else if ("decimal".equals(dataType)) {
return new BigDecimal(strValue);
} else if ("timestamp".equals(dataType)) {
- return Long.valueOf(DateStrDictionary.stringToMillis(strValue));
+ return Long.valueOf(DateFormat.stringToMillis(strValue));
} else if ("float".equals(dataType)){
return Float.valueOf(strValue);
} else {
[02/11] incubator-kylin git commit: fixed hadoop/hive lib directory
detection to work with MapR paths (such as /opt/mapr/hive/hive-0.13/)
Posted by lu...@apache.org.
fixed hadoop/hive lib directory detection to work with MapR paths (such as /opt/mapr/hive/hive-0.13/)
Signed-off-by: Li, Yang <ya...@ebay.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/bc8d3601
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/bc8d3601
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/bc8d3601
Branch: refs/heads/0.7
Commit: bc8d36011c413a232415fbc436d2953290982d5e
Parents: 4ab18c6
Author: c-horn <ch...@gmail.com>
Authored: Fri May 29 14:30:53 2015 -0400
Committer: Li, Yang <ya...@ebay.com>
Committed: Thu Jun 4 17:21:36 2015 +0800
----------------------------------------------------------------------
bin/find-hive-dependency.sh | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/bc8d3601/bin/find-hive-dependency.sh
----------------------------------------------------------------------
diff --git a/bin/find-hive-dependency.sh b/bin/find-hive-dependency.sh
index 817697f..d8accfc 100644
--- a/bin/find-hive-dependency.sh
+++ b/bin/find-hive-dependency.sh
@@ -30,16 +30,16 @@ do
then
hive_exec_path=$data
fi
- result=`echo $data | grep 'hive/conf'`
+ result=`echo $data | grep -e 'hive[^/]*/conf'`
if [ $result ]
then
hive_conf_path=$data
fi
done
-hdp_home=`echo $hive_exec_path | awk -F '/hive/lib/' '{print $1}'`
+hdp_home=`echo $hive_exec_path | awk -F '/hive.*/lib/' '{print $1}'`
hcatalog=`find $hdp_home -name "hive-hcatalog-core[0-9\.-]*jar" 2>&1 | grep -m 1 -v 'Permission denied'`
-hive_lib=`find "$hdp_home/hive/lib" -name '*.jar' ! -name '*calcite*' -printf '%p:' | sed 's/:$//'`
+hive_lib=`find "$(dirname $hive_exec_path)" -name '*.jar' ! -name '*calcite*' -printf '%p:' | sed 's/:$//'`
if [ -z "$hcatalog" ]
then
@@ -49,4 +49,4 @@ fi
hive_dependency=${hive_conf_path}:${hive_lib}:${hcatalog}
echo "hive dependency: $hive_dependency"
-export hive_dependency
\ No newline at end of file
+export hive_dependency
[10/11] incubator-kylin git commit: resize select box in query page
and make grid selectable
Posted by lu...@apache.org.
resize select box in query page and make grid selectable
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/d5a0e495
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/d5a0e495
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/d5a0e495
Branch: refs/heads/0.7
Commit: d5a0e495e691fb1dfff516084a3bd7c92d36d5cb
Parents: a7c28c3
Author: jiazhong <ji...@ebay.com>
Authored: Mon Jun 8 20:18:27 2015 +0800
Committer: jiazhong <ji...@ebay.com>
Committed: Mon Jun 8 20:18:27 2015 +0800
----------------------------------------------------------------------
webapp/app/partials/query/query_detail.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d5a0e495/webapp/app/partials/query/query_detail.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/query/query_detail.html b/webapp/app/partials/query/query_detail.html
index 5ca9010..42f8dbb 100644
--- a/webapp/app/partials/query/query_detail.html
+++ b/webapp/app/partials/query/query_detail.html
@@ -128,7 +128,7 @@
</div>
<div ng-if="curQuery.graph.show" class="row">
- <div class="col-xs-4 col-md-3">
+ <div class="col-xs-4 col-lg-3">
<div class="graph_content">
<label>Graph Type</label>
@@ -174,7 +174,7 @@
</div>
</div>
</div>
- <div class="col-xs-8 col-md-9">
+ <div class="col-xs-8 col-lg-9">
<div ng-if="curQuery.graph.data.length > 0">
<div ng-if="curQuery.graph.type.value == 'bar'">
<nvd3-multi-bar-chart
[11/11] incubator-kylin git commit: Merge branch '0.7.1' into
0.7-staging
Posted by lu...@apache.org.
Merge branch '0.7.1' into 0.7-staging
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/724ccf96
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/724ccf96
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/724ccf96
Branch: refs/heads/0.7
Commit: 724ccf96dd75b649d0e0fa9daf93b8410f818565
Parents: d5a0e49 48823ca
Author: Luke Han <lu...@apache.org>
Authored: Mon Jun 8 10:12:23 2015 -0700
Committer: Luke Han <lu...@apache.org>
Committed: Mon Jun 8 10:12:23 2015 -0700
----------------------------------------------------------------------
atopcalcite/pom.xml | 2 +-
bin/find-hbase-dependency.sh | 18 +
common/pom.xml | 2 +-
cube/pom.xml | 2 +-
dictionary/pom.xml | 2 +-
.../apache/kylin/dict/TrieDictionaryTest.java | 2 +-
.../english-words.80 (scowl-2015.05.18).dic | 139304 ++++++++++++++++
.../english-words.80 (scowl-2015.05.18).txt | 139304 ----------------
invertedindex/pom.xml | 2 +-
jdbc/pom.xml | 2 +-
job/pom.xml | 2 +-
metadata/pom.xml | 2 +-
pom.xml | 9 +-
query/pom.xml | 2 +-
server/pom.xml | 2 +-
src/main/config/assemblies/source-assembly.xml | 3 +
storage/pom.xml | 2 +-
17 files changed, 139343 insertions(+), 139319 deletions(-)
----------------------------------------------------------------------
[06/11] incubator-kylin git commit: minor,
DebugTomcat pick up job jars from dev env
Posted by lu...@apache.org.
minor, DebugTomcat pick up job jars from dev env
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/14141e0d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/14141e0d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/14141e0d
Branch: refs/heads/0.7
Commit: 14141e0dbc6bdc597c39628a548059e259447881
Parents: fc838d3
Author: Yang Li <li...@apache.org>
Authored: Sat Jun 6 20:52:20 2015 +0800
Committer: Yang Li <li...@apache.org>
Committed: Sat Jun 6 20:52:20 2015 +0800
----------------------------------------------------------------------
.../org/apache/kylin/common/KylinConfig.java | 3 +-
.../java/org/apache/kylin/rest/DebugTomcat.java | 87 ++++++++++++++------
2 files changed, 62 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/14141e0d/common/src/main/java/org/apache/kylin/common/KylinConfig.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/kylin/common/KylinConfig.java b/common/src/main/java/org/apache/kylin/common/KylinConfig.java
index 536f34c..b21e63b 100644
--- a/common/src/main/java/org/apache/kylin/common/KylinConfig.java
+++ b/common/src/main/java/org/apache/kylin/common/KylinConfig.java
@@ -304,6 +304,7 @@ public class KylinConfig {
}
public void overrideKylinJobJarPath(String path) {
+ logger.info("override " + KYLIN_JOB_JAR + " to " + path);
System.setProperty(KYLIN_JOB_JAR, path);
}
@@ -341,6 +342,7 @@ public class KylinConfig {
}
public void overrideCoprocessorLocalJar(String path) {
+ logger.info("override " + COPROCESSOR_LOCAL_JAR + " to " + path);
System.setProperty(COPROCESSOR_LOCAL_JAR, path);
}
@@ -469,7 +471,6 @@ public class KylinConfig {
return property != null ? property : kylinConfig.getString(prop);
}
-
private String[] getOptionalStringArray(String prop) {
final String property = System.getProperty(prop);
if (!StringUtil.isBlank(property))
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/14141e0d/server/src/main/java/org/apache/kylin/rest/DebugTomcat.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/kylin/rest/DebugTomcat.java b/server/src/main/java/org/apache/kylin/rest/DebugTomcat.java
index 2a09b07..57f1322 100644
--- a/server/src/main/java/org/apache/kylin/rest/DebugTomcat.java
+++ b/server/src/main/java/org/apache/kylin/rest/DebugTomcat.java
@@ -28,44 +28,77 @@ import org.apache.catalina.core.StandardServer;
import org.apache.catalina.deploy.ErrorPage;
import org.apache.catalina.startup.Tomcat;
import org.apache.hadoop.util.Shell;
-
import org.apache.kylin.common.KylinConfig;
import org.apache.kylin.rest.util.ClasspathUtil;
public class DebugTomcat {
+ public static void setupDebugEnv() {
+ try {
+ // test_case_data/sandbox/ contains HDP 2.2 site xmls which is dev sandbox
+ ClasspathUtil.addClasspath(new File("../examples/test_case_data/sandbox").getAbsolutePath());
+ System.setProperty(KylinConfig.KYLIN_CONF, "../examples/test_case_data/sandbox");
+ overrideDevJobJarLocations();
+
+ System.setProperty("spring.profiles.active", "testing");
+ if (System.getProperty("hdp.version") == null)
+ System.setProperty("hdp.version", "2.2.4.2-2"); // mapred-site.xml ref this
+
+ // workaround for job submission from win to linux -- https://issues.apache.org/jira/browse/MAPREDUCE-4052
+ if (Shell.WINDOWS) {
+ {
+ Field field = Shell.class.getDeclaredField("WINDOWS");
+ field.setAccessible(true);
+ Field modifiersField = Field.class.getDeclaredField("modifiers");
+ modifiersField.setAccessible(true);
+ modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
+ field.set(null, false);
+ }
+ {
+ Field field = java.io.File.class.getDeclaredField("pathSeparator");
+ field.setAccessible(true);
+ Field modifiersField = Field.class.getDeclaredField("modifiers");
+ modifiersField.setAccessible(true);
+ modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
+ field.set(null, ":");
+ }
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ private static void overrideDevJobJarLocations() {
+ KylinConfig conf = KylinConfig.getInstanceFromEnv();
+ File devJobJar = findFile("../job/target", "kylin-job-.*-SNAPSHOT-job.jar");
+ if (devJobJar != null) {
+ conf.overrideKylinJobJarPath(devJobJar.getAbsolutePath());
+ }
+ File devCoprocessorJar = findFile("../storage/target", "kylin-storage-.*-SNAPSHOT-coprocessor.jar");
+ if (devCoprocessorJar != null) {
+ conf.overrideCoprocessorLocalJar(devCoprocessorJar.getAbsolutePath());
+ }
+ }
+
+ private static File findFile(String dir, String ptn) {
+ File[] files = new File(dir).listFiles();
+ if (files != null) {
+ for (File f : files) {
+ if (f.getName().matches(ptn))
+ return f;
+ }
+ }
+ return null;
+ }
+
public static void main(String[] args) throws Exception {
+ setupDebugEnv();
+
int port = 7070;
if (args.length >= 1) {
port = Integer.parseInt(args[0]);
}
- // test_case_data/sandbox/ contains HDP 2.2 site xmls which is dev sandbox
- ClasspathUtil.addClasspath(new File("../examples/test_case_data/sandbox").getAbsolutePath());
- System.setProperty(KylinConfig.KYLIN_CONF, "../examples/test_case_data/sandbox");
- System.setProperty("hdp.version", "2.2.4.2-2"); // mapred-site.xml ref this
-
- // workaround for job submission from win to linux -- https://issues.apache.org/jira/browse/MAPREDUCE-4052
- if (Shell.WINDOWS) {
- {
- Field field = Shell.class.getDeclaredField("WINDOWS");
- field.setAccessible(true);
- Field modifiersField = Field.class.getDeclaredField("modifiers");
- modifiersField.setAccessible(true);
- modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
- field.set(null, false);
- }
- {
- Field field = java.io.File.class.getDeclaredField("pathSeparator");
- field.setAccessible(true);
- Field modifiersField = Field.class.getDeclaredField("modifiers");
- modifiersField.setAccessible(true);
- modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
- field.set(null, ":");
- }
- }
-
- System.setProperty("spring.profiles.active", "testing");
String webBase = new File("../webapp/app").getAbsolutePath();
if (new File(webBase, "WEB-INF").exists() == false) {
throw new RuntimeException("In order to launch Kylin web app from IDE, please make a symblink from webapp/app/WEB-INF to server/src/main/webapp/WEB-INF");
[04/11] incubator-kylin git commit: added an exists check before
setting column family file permissions
Posted by lu...@apache.org.
added an exists check before setting column family file permissions
Signed-off-by: Li, Yang <ya...@ebay.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/02562c0d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/02562c0d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/02562c0d
Branch: refs/heads/0.7
Commit: 02562c0dd7c4010726e3d3ada42c49cb279bd68a
Parents: 7427f74
Author: c-horn <ch...@gmail.com>
Authored: Fri May 29 14:46:58 2015 -0400
Committer: Li, Yang <ya...@ebay.com>
Committed: Thu Jun 4 17:21:44 2015 +0800
----------------------------------------------------------------------
.../java/org/apache/kylin/job/hadoop/hbase/BulkLoadJob.java | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/02562c0d/job/src/main/java/org/apache/kylin/job/hadoop/hbase/BulkLoadJob.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/hadoop/hbase/BulkLoadJob.java b/job/src/main/java/org/apache/kylin/job/hadoop/hbase/BulkLoadJob.java
index fa3725c..7a4702e 100644
--- a/job/src/main/java/org/apache/kylin/job/hadoop/hbase/BulkLoadJob.java
+++ b/job/src/main/java/org/apache/kylin/job/hadoop/hbase/BulkLoadJob.java
@@ -72,7 +72,12 @@ public class BulkLoadJob extends AbstractHadoopJob {
FsPermission permission = new FsPermission((short) 0777);
for (HBaseColumnFamilyDesc cf : cubeDesc.getHBaseMapping().getColumnFamily()) {
String cfName = cf.getName();
- fs.setPermission(new Path(input + cfName), permission);
+ Path columnFamilyPath = new Path(input + cfName);
+
+ // File may have already been auto-loaded (in the case of MapR DB)
+ if(fs.exists(columnFamilyPath)) {
+ fs.setPermission(columnFamilyPath, permission);
+ }
}
String[] newArgs = new String[2];
[09/11] incubator-kylin git commit: KYLIN-818,
measure returntype support integer ,
and add start/end time to hbase tab in cube, enhance UI in query page
Posted by lu...@apache.org.
KYLIN-818, measure returntype support integer ,and add start/end time to hbase tab in cube,enhance UI in query page
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/a7c28c36
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/a7c28c36
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/a7c28c36
Branch: refs/heads/0.7
Commit: a7c28c36360ba8c9280b54cc57fca4068cc25355
Parents: 1dc1a37
Author: jiazhong <ji...@ebay.com>
Authored: Mon Jun 8 18:42:02 2015 +0800
Committer: jiazhong <ji...@ebay.com>
Committed: Mon Jun 8 18:43:43 2015 +0800
----------------------------------------------------------------------
webapp/app/js/controllers/cubeSchema.js | 2 +-
webapp/app/less/app.less | 2 +-
webapp/app/less/layout.less | 5 +++++
webapp/app/partials/cubes/cube_detail.html | 2 ++
webapp/app/partials/query/query_detail.html | 5 ++---
5 files changed, 11 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/a7c28c36/webapp/app/js/controllers/cubeSchema.js
----------------------------------------------------------------------
diff --git a/webapp/app/js/controllers/cubeSchema.js b/webapp/app/js/controllers/cubeSchema.js
index d8e490d..388edaa 100755
--- a/webapp/app/js/controllers/cubeSchema.js
+++ b/webapp/app/js/controllers/cubeSchema.js
@@ -128,7 +128,7 @@ KylinApp.controller('CubeSchemaCtrl', function ($scope, QueryService, UserServic
switch ($scope.newMeasure.function.expression) {
case "SUM":
- if (colType === "smallint" || colType === "int" || colType === "bigint") {
+ if (colType === "smallint" || colType === "int" || colType === "bigint"||colType==="integer") {
$scope.newMeasure.function.returntype = 'bigint';
} else {
if (colType.indexOf('decimal') != -1) {
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/a7c28c36/webapp/app/less/app.less
----------------------------------------------------------------------
diff --git a/webapp/app/less/app.less b/webapp/app/less/app.less
index 5675957..162c929 100644
--- a/webapp/app/less/app.less
+++ b/webapp/app/less/app.less
@@ -550,7 +550,7 @@ ul.messenger.messenger-fixed.messenger-on-top .messenger-message .messenger-mess
}
/** Enable the text selectable on notification of Messenger **/
-ul.messenger .messenger-message-inner {
+ul.messenger .messenger-message-inner ,.ngCellText{
-moz-user-select: text;
-webkit-user-select: text;
-o-user-select: text;
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/a7c28c36/webapp/app/less/layout.less
----------------------------------------------------------------------
diff --git a/webapp/app/less/layout.less b/webapp/app/less/layout.less
index b3ea6b6..d52d5f5 100644
--- a/webapp/app/less/layout.less
+++ b/webapp/app/less/layout.less
@@ -19,8 +19,13 @@
padding-top: 45px;
}
+body{
+ overflow: auto !important;
+}
+
.main-container {
padding-bottom: 45px;
+ min-width: 960px;
}
.main-content {
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/a7c28c36/webapp/app/partials/cubes/cube_detail.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/cubes/cube_detail.html b/webapp/app/partials/cubes/cube_detail.html
index 59f2d69..1fdad18 100755
--- a/webapp/app/partials/cubes/cube_detail.html
+++ b/webapp/app/partials/cubes/cube_detail.html
@@ -107,6 +107,8 @@
<ul>
<li>Region Count: <span class="red">{{table.regionCount}}</span></li>
<li>Size: <span class="red">{{table.tableSize | bytes:2}}</span></li>
+ <li>Start Time: <span class="red">{{table.dateRangeStart | reverseToGMT0}}</span></li>
+ <li>End Time: <span class="red">{{table.dateRangeEnd | reverseToGMT0}}</span></li>
</ul>
</div>
<div ng-if="cube.hbase">
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/a7c28c36/webapp/app/partials/query/query_detail.html
----------------------------------------------------------------------
diff --git a/webapp/app/partials/query/query_detail.html b/webapp/app/partials/query/query_detail.html
index 7157e9c..5ca9010 100644
--- a/webapp/app/partials/query/query_detail.html
+++ b/webapp/app/partials/query/query_detail.html
@@ -128,7 +128,7 @@
</div>
<div ng-if="curQuery.graph.show" class="row">
- <div class="col-xs-2">
+ <div class="col-xs-4 col-md-3">
<div class="graph_content">
<label>Graph Type</label>
@@ -174,8 +174,7 @@
</div>
</div>
</div>
-
- <div class="col-xs-10">
+ <div class="col-xs-8 col-md-9">
<div ng-if="curQuery.graph.data.length > 0">
<div ng-if="curQuery.graph.type.value == 'bar'">
<nvd3-multi-bar-chart
[07/11] incubator-kylin git commit: minor,
KylinConfig read kylin.properties.override, to ease dev env
Posted by lu...@apache.org.
minor, KylinConfig read kylin.properties.override,to ease dev env
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/d2ae5035
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/d2ae5035
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/d2ae5035
Branch: refs/heads/0.7
Commit: d2ae5035f5666e82a7957322d2b4da838168d0ab
Parents: 14141e0
Author: Yang Li <li...@apache.org>
Authored: Sat Jun 6 21:34:43 2015 +0800
Committer: Yang Li <li...@apache.org>
Committed: Sat Jun 6 21:34:43 2015 +0800
----------------------------------------------------------------------
.../java/org/apache/kylin/common/KylinConfig.java | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/d2ae5035/common/src/main/java/org/apache/kylin/common/KylinConfig.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/kylin/common/KylinConfig.java b/common/src/main/java/org/apache/kylin/common/KylinConfig.java
index b21e63b..08a4d66 100644
--- a/common/src/main/java/org/apache/kylin/common/KylinConfig.java
+++ b/common/src/main/java/org/apache/kylin/common/KylinConfig.java
@@ -563,6 +563,23 @@ public class KylinConfig {
logger.error("fail to locate kylin.properties");
throw new RuntimeException("fail to locate kylin.properties");
}
+
+ File overrideFile = new File (propFile.getParentFile(), propFile.getName() + ".override");
+ if (overrideFile.exists()) {
+ try {
+ PropertiesConfiguration conf = new PropertiesConfiguration();
+ conf.load(propFile);
+ PropertiesConfiguration override = new PropertiesConfiguration();
+ override.load(overrideFile);
+ conf.copy(override);
+ ByteArrayOutputStream bout = new ByteArrayOutputStream();
+ conf.save(bout);
+ return new ByteArrayInputStream(bout.toByteArray());
+ } catch (ConfigurationException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
try {
return new FileInputStream(propFile);
} catch (FileNotFoundException e) {
[03/11] incubator-kylin git commit: altered command line pattern
recognition to work with MapRFS
Posted by lu...@apache.org.
altered command line pattern recognition to work with MapRFS
Signed-off-by: Li, Yang <ya...@ebay.com>
Project: http://git-wip-us.apache.org/repos/asf/incubator-kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-kylin/commit/7427f740
Tree: http://git-wip-us.apache.org/repos/asf/incubator-kylin/tree/7427f740
Diff: http://git-wip-us.apache.org/repos/asf/incubator-kylin/diff/7427f740
Branch: refs/heads/0.7
Commit: 7427f740e2157e6a6768c6a65f13a0ed3c7d8bc4
Parents: bc8d360
Author: c-horn <ch...@gmail.com>
Authored: Fri May 29 14:35:24 2015 -0400
Committer: Li, Yang <ya...@ebay.com>
Committed: Thu Jun 4 17:21:40 2015 +0800
----------------------------------------------------------------------
.../main/java/org/apache/kylin/job/common/ShellExecutable.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7427f740/job/src/main/java/org/apache/kylin/job/common/ShellExecutable.java
----------------------------------------------------------------------
diff --git a/job/src/main/java/org/apache/kylin/job/common/ShellExecutable.java b/job/src/main/java/org/apache/kylin/job/common/ShellExecutable.java
index 47a3145..4bc8dac 100644
--- a/job/src/main/java/org/apache/kylin/job/common/ShellExecutable.java
+++ b/job/src/main/java/org/apache/kylin/job/common/ShellExecutable.java
@@ -73,13 +73,13 @@ public class ShellExecutable extends AbstractExecutable {
private static final Pattern PATTERN_APP_ID = Pattern.compile("Submitted application (.*?) to ResourceManager");
private static final Pattern PATTERN_APP_URL = Pattern.compile("The url to track the job: (.*)");
private static final Pattern PATTERN_JOB_ID = Pattern.compile("Running job: (.*)");
- private static final Pattern PATTERN_HDFS_BYTES_WRITTEN = Pattern.compile("HDFS: Number of bytes written=(\\d+)");
+ private static final Pattern PATTERN_HDFS_BYTES_WRITTEN = Pattern.compile("(?:HD|MAPR)FS: Number of bytes written=(\\d+)");
private static final Pattern PATTERN_SOURCE_RECORDS_COUNT = Pattern.compile("Map input records=(\\d+)");
- private static final Pattern PATTERN_SOURCE_RECORDS_SIZE = Pattern.compile("HDFS Read: (\\d+) HDFS Write");
+ private static final Pattern PATTERN_SOURCE_RECORDS_SIZE = Pattern.compile("(?:HD|MAPR)FS Read: (\\d+) HDFS Write");
// hive
private static final Pattern PATTERN_HIVE_APP_ID_URL = Pattern.compile("Starting Job = (.*?), Tracking URL = (.*)");
- private static final Pattern PATTERN_HIVE_BYTES_WRITTEN = Pattern.compile("HDFS Read: (\\d+) HDFS Write: (\\d+) SUCCESS");
+ private static final Pattern PATTERN_HIVE_BYTES_WRITTEN = Pattern.compile("(?:HD|MAPR)FS Read: (\\d+) HDFS Write: (\\d+) SUCCESS");
@Override
public void log(String message) {