You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ni...@apache.org on 2019/09/10 08:04:58 UTC
[kylin] branch master updated: KYLIN-4159 The first step of job
will fail and throw "Column \'xx\' in where clause is ambiguous" in jdbc
datasource
This is an automated email from the ASF dual-hosted git repository.
nic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git
The following commit(s) were added to refs/heads/master by this push:
new a8e87c8 KYLIN-4159 The first step of job will fail and throw "Column \'xx\' in where clause is ambiguous" in jdbc datasource
a8e87c8 is described below
commit a8e87c8fe29aa342df3f6c15428345ff60105ec0
Author: luguosheng1314 <55...@qq.com>
AuthorDate: Fri Sep 6 14:51:56 2019 +0800
KYLIN-4159 The first step of job will fail and throw "Column \'xx\' in where clause is ambiguous" in jdbc datasource
---
.../kylin/source/jdbc/JdbcHiveInputBase.java | 33 ++++++++++++----------
1 file changed, 18 insertions(+), 15 deletions(-)
diff --git a/source-jdbc/src/main/java/org/apache/kylin/source/jdbc/JdbcHiveInputBase.java b/source-jdbc/src/main/java/org/apache/kylin/source/jdbc/JdbcHiveInputBase.java
index 94594f3..2c6c33f 100644
--- a/source-jdbc/src/main/java/org/apache/kylin/source/jdbc/JdbcHiveInputBase.java
+++ b/source-jdbc/src/main/java/org/apache/kylin/source/jdbc/JdbcHiveInputBase.java
@@ -17,7 +17,18 @@
*/
package org.apache.kylin.source.jdbc;
-import com.google.common.collect.Maps;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
import org.apache.commons.lang3.StringUtils;
import org.apache.kylin.common.KylinConfig;
import org.apache.kylin.common.SourceDialect;
@@ -44,17 +55,7 @@ import org.apache.kylin.source.jdbc.metadata.JdbcMetadataFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
+import com.google.common.collect.Maps;
public class JdbcHiveInputBase extends HiveInputBase {
private static final Logger logger = LoggerFactory.getLogger(JdbcHiveInputBase.class);
@@ -222,11 +223,13 @@ public class JdbcHiveInputBase extends HiveInputBase {
String splitTableAlias;
String splitColumn;
+ String quoteFullNamedColumn; // `table.column`
String splitDatabase;
TblColRef splitColRef = determineSplitColumn();
splitTableAlias = splitColRef.getTableAlias();
splitColumn = getColumnIdentityQuoted(splitColRef, jdbcMetadataDialect, metaMap, true);
+ quoteFullNamedColumn = quoteIdentifier(partCol, jdbcMetadataDialect.getDialect()).toLowerCase(Locale.ROOT);
splitDatabase = splitColRef.getColumnDesc().getTable().getDatabase();
String selectSql = generateSelectDataStatementRDBMS(flatDesc, true, new String[] { partCol },
@@ -244,8 +247,8 @@ public class JdbcHiveInputBase extends HiveInputBase {
String filedDelimiter = config.getJdbcSourceFieldDelimiter();
int mapperNum = config.getSqoopMapperNum();
- String bquery = String.format(Locale.ROOT, "SELECT min(%s), max(%s) FROM %s.%s ", splitColumn, splitColumn,
- getSchemaQuoted(metaMap, splitDatabase, jdbcMetadataDialect, true),
+ String bquery = String.format(Locale.ROOT, "SELECT min(%s), max(%s) FROM %s.%s ", quoteFullNamedColumn,
+ quoteFullNamedColumn, getSchemaQuoted(metaMap, splitDatabase, jdbcMetadataDialect, true),
getTableIdentityQuoted(splitColRef.getTableRef(), metaMap, jdbcMetadataDialect, true));
if (partitionDesc.isPartitioned()) {
SegmentRange segRange = flatDesc.getSegRange();
@@ -270,7 +273,7 @@ public class JdbcHiveInputBase extends HiveInputBase {
+ "--connect \"%s\" --driver %s --username %s --password \"%s\" --query \"%s AND \\$CONDITIONS\" "
+ "--target-dir %s/%s --split-by %s --boundary-query \"%s\" --null-string '%s' "
+ "--null-non-string '%s' --fields-terminated-by '%s' --num-mappers %d", sqoopHome, connectionUrl,
- driverClass, jdbcUser, jdbcPass, selectSql, jobWorkingDir, hiveTable, splitColumn, bquery,
+ driverClass, jdbcUser, jdbcPass, selectSql, jobWorkingDir, hiveTable, partCol, bquery,
sqoopNullString, sqoopNullNonString, filedDelimiter, mapperNum);
logger.debug("sqoop cmd : {}", cmd);
CmdStep step = new CmdStep();