[
https://issues.apache.org/jira/browse/HIVE-5672?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14512316#comment-14512316
]
Nemon Lou commented on HIVE-5672:
---------------------------------
I have tried both Sushanth's and Xuefu 's solution of simplified grammar
,they both treated local directory wrongly as DFS directory.
Some analysis from SemanticAnalyzer.javaļ¼
The genFileSinkPlan method use dest_type from QBMetaData to determine the
destination of final output.
{code}
QBMetaData qbm = qb.getMetaData();
Integer dest_type = qbm.getDestTypeForAlias(dest);
switch (dest_type.intValue()) {
case QBMetaData.DEST_TABLE: {
...
}
case QBMetaData.DEST_PARTITION:{
...
}
case QBMetaData.DEST_LOCAL_FILE:
isLocal = true;
// fall through
case QBMetaData.DEST_DFS_FILE: {
...
if (isLocal) {
...
} else {
...
}
default:
throw new SemanticException("Unknown destination type: " + dest_type);
{code}
The dest_type from QBMetaData is determined by this method :
{code}
qb.getMetaData().setDestForAlias(name, fname,
(ast.getToken().getType() == HiveParser.TOK_DIR));
{code}
The code for setDestForAlias is this :
{code}
public void setDestForAlias(String alias, String fname, boolean isDfsFile) {
nameToDestType.put(alias, isDfsFile ? Integer.valueOf(DEST_DFS_FILE)
: Integer.valueOf(DEST_LOCAL_FILE));
nameToDestFile.put(alias, fname);
}
{code}
The simplified grammar proposed by Sushanth or Xuefu can not tell which kind
of directory is used (DEST_DFS_FILE or DEST_LOCAL_FILE).
Maybe i understood something wrong,please correct me. :)
> Insert with custom separator not supported for non-local directory
> ------------------------------------------------------------------
>
> Key: HIVE-5672
> URL: https://issues.apache.org/jira/browse/HIVE-5672
> Project: Hive
> Issue Type: Bug
> Affects Versions: 0.12.0, 1.0.0
> Reporter: Romain Rigaux
> Assignee: Nemon Lou
> Attachments: HIVE-5672.1.patch, HIVE-5672.2.patch, HIVE-5672.3.patch,
> HIVE-5672.4.patch, HIVE-5672.5.patch, HIVE-5672.5.patch.tar.gz,
> HIVE-5672.6.patch, HIVE-5672.6.patch.tar.gz
>
>
> https://issues.apache.org/jira/browse/HIVE-3682 is great but non local
> directory don't seem to be supported:
> {code}
> insert overwrite directory '/tmp/test-02'
> row format delimited
> FIELDS TERMINATED BY ':'
> select description FROM sample_07
> {code}
> {code}
> Error while compiling statement: FAILED: ParseException line 2:0 cannot
> recognize input near 'row' 'format' 'delimited' in select clause
> {code}
> This works (with 'local'):
> {code}
> insert overwrite local directory '/tmp/test-02'
> row format delimited
> FIELDS TERMINATED BY ':'
> select code, description FROM sample_07
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)