解决Sqoop使用—query 导入时不支持别名的问题
2013-12-03 20:10
435 查看
原因:sqoop解析sql时,直接取的数据库字段的名字,没有取别名。不过sqoop为什么这么做,尚不清楚。
解决方案:修改文件:org.apache.sqoop.manager.SqlManager.java
找到getColumnNamesForRawQuery(String stmt)方法;
找到如下代码
String colName = metadata.getColumnName(i);
if (colName == null || colName.equals("")){
colName = metadata.getColumnLabel(i);
}
改为:
String colName =metadata.getColumnLabel(i);
if (colName == null || colName.equals("")) {
colName = metadata.getColumnName(i);
}
找到getColumnTypesForRawQuery(String stmt)方法;
同样:
找到如下代码
String colName = metadata.getColumnName(i);
if (colName == null || colName.equals("")){
colName = metadata.getColumnLabel(i);
}
改为:
String colName =metadata.getColumnLabel(i);
if (colName == null || colName.equals("")) {
colName = metadata.getColumnName(i);
}
重新编译项目,用新编译的该类替换sqoop-1.4.3-cdh4.4.0.jar包中类。并替换sqoop的根目录下的该jar包。问题解决!
本文主要通过对sqoop的远程debug跟踪定位解决的该问题,具体远程debug方法如下:
http://blog.csdn.net/exception_ex/article/details/17166225
注:本文是针对sqoop-1.4.3-cdh4.4.0.jar包进行分析,具体到其他版本需要具体进行测试。
解决方案:修改文件:org.apache.sqoop.manager.SqlManager.java
找到getColumnNamesForRawQuery(String stmt)方法;
找到如下代码
String colName = metadata.getColumnName(i);
if (colName == null || colName.equals("")){
colName = metadata.getColumnLabel(i);
}
改为:
String colName =metadata.getColumnLabel(i);
if (colName == null || colName.equals("")) {
colName = metadata.getColumnName(i);
}
找到getColumnTypesForRawQuery(String stmt)方法;
同样:
找到如下代码
String colName = metadata.getColumnName(i);
if (colName == null || colName.equals("")){
colName = metadata.getColumnLabel(i);
}
改为:
String colName =metadata.getColumnLabel(i);
if (colName == null || colName.equals("")) {
colName = metadata.getColumnName(i);
}
重新编译项目,用新编译的该类替换sqoop-1.4.3-cdh4.4.0.jar包中类。并替换sqoop的根目录下的该jar包。问题解决!
本文主要通过对sqoop的远程debug跟踪定位解决的该问题,具体远程debug方法如下:
http://blog.csdn.net/exception_ex/article/details/17166225
注:本文是针对sqoop-1.4.3-cdh4.4.0.jar包进行分析,具体到其他版本需要具体进行测试。
相关文章推荐
- 解决从mysql端使用sqoop导入hive端字段类型不匹配问题
- 使用cfqueryparam解决cfquery的单引号问题。
- 解决Myeclipse10中使用javascript验证form表单,返回true(false)不支持的问题
- jsp中使用jstl导入html乱码问题解决方法
- IBatis.Net 下使用SqlBulkCopy 大批量导入数据 问题解决
- 使用JS插件解决IE6不支持PNG透明背景问题
- 关于“打开项目**时发生问题,尝试退出并重新启动应用程序。如果问题仍然存在,则可能是由于正在使用不支持的项目版本,或者项目文件可能损坏”的问题的解决办法。
- 第一次使用Excel2007的Microsoft Query遇到的问题及解决:别名的使用
- mybatis 使用dblink 执行insert 报ora-22816 returning 子句不支持的功能问题解决方法
- Query中ajax的使用与缓存问题的解决方法
- [置顶] 使用Android的webview将web app打包成安卓的app和解决安卓webview不支持input type=file问题
- Myeclipse导入eclipse工程无法使用问题解决
- ios开发使用xcode6打包protobuf静态库 解决了 官方引用 protobuf 导致的冲突问题 包含 arm64 支持
- 使用sqoop将hive中的表数据导入到mysql数据库表中,错误解决
- HTML5异步上传图片(支持预览和进度条),使用其他按钮触发file onclick事件,解决某些浏览器无法触发的问题
- 使用sqoop将数据从hdfs中导入mysql时,卡在INFO mapreduce.Job: map 100% reduce 0%的解决办法
- 解决sqoop从mysql导入到hive表的多分区问题
- Query中ajax的使用与缓存问题的解决方法
- 解决sublime使用pylint插件时对django的支持问题
- webpack 使用别名(resolve.alias)解决scss @import相对路径导致的问题