在通过Oozie调用sqoop action从DB导入数据到hive表的时候,发现了异常。
28167 [Thread-30] INFO org.apache.sqoop.hive.HiveImport - FAILED: SemanticException [Error 10028]: Line 2:17 Path is not legal ''hdfs://cnsz141195.app.paic.com.cn:9000/user/hduser0401/table_name'': Move from: hdfs://cnsz141195.app.paic.com.cn:9000/user/hduser0401/table_name to: hdfs://CNSZ141195.app.paic.com.cn:9000/user/hive/warehouse/eshop.db/t_ahhs_product_info is not valid. Please check that values for params "default.fs.name" and "hive.metastore.warehouse.dir" do not conflict.
28202 [main] ERROR org.apache.sqoop.tool.ImportTool - Encountered IOException running import job: java.io.IOException: Hive exited with status 44
使用sqoop命令行执行却没有报错。
我翻查了源代码,发现Hive会做一个强制校验,校验uri的scheme值,特别是在sqoop的时候,会生成一个Hive脚本,在做load data local inpath 的时候进行scheme的校验。
我也翻查了所有读取配置,都是配置成一样的DNS,大写的。
(Scheme也就是一个hdfs地址的NameNode地址部分。)
如果发现Scheme不一样,如,大小写不一致,就会出现Path is not legal 的Exception
机器名规范要求大写,那DNS也隐射的值也要一致大写吗?这样有可能会导致load data local失败的。
这里作为一个隐患提出来。
Hive的校验代码:
// only in 'local' mode do we copy stuff from one place to another.
// reject different scheme/authority in other cases.
if (!isLocal
&& (!StringUtils.equals(fromURI.getScheme(), toURI.getScheme()) || !StringUtils
.equals(fromURI.getAuthority(), toURI.getAuthority()))) {
String reason = "Move from: " + fromURI.toString() + " to: "
+ toURI.toString() + " is not valid. "
+ "Please check that values for params \"default.fs.name\" and "
+ "\"hive.metastore.warehouse.dir\" do not conflict.";
throw new SemanticException(ErrorMsg.ILLEGAL_PATH.getMsg(ast, reason));
}
如果有知道的朋友请告诉我,怎么解决这个问题,谢谢~
相关推荐
这可以通过修改环境变量`HADOOP_CLASSPATH`或在`sqoop-env.sh`文件中设置`SQOOP_CLASSPATH`来完成。 2. **版本匹配**:确保你使用的`java-json.jar`版本与CDH 6.2.1版本的Sqoop兼容。通常,你可以查看官方文档或...
3. **配置环境变量**:编辑`~/.bashrc`或`~/.bash_profile`,添加SQOOP_HOME环境变量,并将其指向Sqoop的安装目录。同时,确保PATH变量包含了SQOOP_HOME/bin。 ```bash export SQOOP_HOME=/usr/local/sqoop ...
- **编辑`/etc/profile`文件**:添加如下内容以配置Java环境变量和sqoop环境变量。 ```bash export JAVA_HOME=/opt/jdk1.7.0_79 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=...
接下来,需要在`/etc/profile`文件中添加相应的环境变量配置,确保所有必要的路径都已正确设置。示例如下: ```bash export JAVA_HOME=/opt/jdk1.7.0_79 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/...
这可能是由于配置错误、环境变量未正确设置、依赖库缺失或版本不兼容等原因。对于"java-json.jar"这个特定的文件,它很可能是Sqoop在处理JSON数据时使用的库,因为JSON是常见的数据交换格式,特别是在大数据处理中。...
2. **配置JAVA_HOME环境变量**:设置JAVA_HOME为JDK安装目录。 3. **安装Hadoop**:下载Hadoop二进制包,并解压至指定目录。 4. **配置Hadoop环境**:编辑`hadoop-env.sh`等配置文件,指向JDK路径。 **实例代码(伪...
它已被集成到DataSphere Studio数据应用开发门户,支持Command Shell以及Linkis(包括Hadoop MR、Hive、Spark、Sqoop、Python)等多种大数据任务。Schedulis还具备数据检查、任务间依赖以及完善的告警和执行策略,...
- 安装Hive并配置相关环境变量。 - 配置`hive-site.xml`文件,指定存储位置、HDFS路径等。 - 启动Hive服务,并使用HQL进行数据操作。 - **实践意义**:通过Hive可以更方便地管理和查询大规模数据集,适用于数据...
8. **Hive与MySQL交互**:Hive可以通过 Sqoop 或者 Hive的外部表功能从MySQL导入数据。在表关联的问题上,通常取决于数据量和实时性需求,如果数据量大且实时性要求不高,可以选择在Hive中做关联操作。 9. **HBase...
应⽤场景,如何学习⼤数据库,虚拟机概念和安装等)、Linux常见命令(⽂件管理、系 统管理、磁盘管理)、Linux Shell编程(SHELL变量、循环控制、应⽤)、Hadoop⼊门(Hadoop组成、单机版环境、⽬录结构、 HDFS界⾯、...