本文将为您提供关于sqoop:【error】从hdfs导入到mysql报ERRORtool.ExportTool:Errorduringexport:Exportjobfailed!的详细介绍,同时,
本文将为您提供关于sqoop:【error】从hdfs导入到mysql 报ERROR tool.ExportTool: Error during export: Export job failed!的详细介绍,同时,我们还将为您提供关于exports、module.exports和export、export default到底是咋回事、ImportError: DLL load failed: 找不到指定的模块;ImportError: numpy.core.multiarray failed to import 报错解决、import、require 、export、export default、exports、module exports、module.exports 、 exports、export、export default 区别的实用信息。
本文目录一览:- sqoop:【error】从hdfs导入到mysql 报ERROR tool.ExportTool: Error during export: Export job failed!
- exports、module.exports和export、export default到底是咋回事
- ImportError: DLL load failed: 找不到指定的模块;ImportError: numpy.core.multiarray failed to import 报错解决
- import、require 、export、export default、exports、module exports
- module.exports 、 exports、export、export default 区别
sqoop:【error】从hdfs导入到mysql 报ERROR tool.ExportTool: Error during export: Export job failed!
19/06/05 19:42:30 ERROR mapreduce.ExportJobBase: Export job failed!
19/06/05 19:42:30 ERROR tool.ExportTool: Error during export:
Export job failed!
at org.apache.sqoop.mapreduce.ExportJobBase.runExport(ExportJobBase.java:445)
at org.apache.sqoop.manager.SqlManager.exportTable(SqlManager.java:931)
at org.apache.sqoop.tool.ExportTool.exportTable(ExportTool.java:80)
at org.apache.sqoop.tool.ExportTool.run(ExportTool.java:99)
at org.apache.sqoop.Sqoop.run(Sqoop.java:147)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.sqoop.Sqoop.runSqoop(Sqoop.java:183)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:234)
at org.apache.sqoop.Sqoop.runTool(Sqoop.java:243)
at org.apache.sqoop.Sqoop.main(Sqoop.java:252)
原因是数据中有中文,而数据库表编码不支持
解决方案如下:
将表的数据导出,删除表后重新创建表,并指定编码DEFAULT CHARSET=utf8
exports、module.exports和export、export default到底是咋回事
1、使用范围
require: node 和 es6 都支持的引入
export / import : 只有es6 支持的导出引入
module.exports / exports: 只有 node 支持的导出
2、node模块
Node里面的模块系统遵循的是CommonJS规范。
那问题又来了,什么是CommonJS规范呢?
由于js以前比较混乱,各写各的代码,没有一个模块的概念,而这个规范出来其实就是对模块的一个定义。
CommonJS定义的模块分为: 模块标识(module)、模块定义(exports) 、模块引用(require)
先解释 exports 和 module.exports
在一个node执行一个文件时,会给这个文件内生成一个 exports和module对象,
而module又有一个exports属性。他们之间的关系如下图,都指向一块{}内存区域。
exports = module.exports = {};
exports --> 内存: {} <-- module.exports
//utils.js
let a = 100;
console.log(module.exports); //能打印出结果为:{}
console.log(exports); //能打印出结果为:{}
exports.a = 200; //这里辛苦劳作帮 module.exports 的内容给改成 {a : 200}
exports = ''指向其他内存区''; //这里把exports的指向指走
//test.js
var a = require(''/utils'');
console.log(a) // 打印为 {a : 200}
从上面可以看出,其实require导出的内容是module.exports的指向的内存块内容,并不是exports的。
简而言之,区分他们之间的区别就是 exports 只是 module.exports的引用,辅助后者添加内容用的。
用白话讲就是,exports只辅助module.exports操作内存中的数据,辛辛苦苦各种操作数据完,累得要死,结果到最后真正被require出去的内容还是module.exports的
其实大家用内存块的概念去理解,就会很清楚了。
然后呢,为了避免糊涂,尽量都用 module.exports 导出,然后用require导入。
3、ES中的模块导出导入
说实话,在es中的模块,就非常清晰了。不过也有一些细节的东西需要搞清楚。
比如 export 和 export default,还有 导入的时候,import a from ..,import {a} from ..,总之也有点乱,那么下面我们就开始把它们捋清楚吧。
export 和 export default:
1、export 和 export default 均可以用于导出常量、函数、文件、模块等
2、在一个文件或模块中,export、import 可以有多个,export default 仅有一个
3、通过 export 方式导出,在导入时要加 {},export default 则不需要
4、export 能直接导出变量表达式,export default 不行
testEs6Export.js 代码:
''use strict''
//导出变量
export const a = ''100'';
//导出方法
export const dogSay = function(){
console.log(''wang wang'');
}
//导出方法第二种
function catSay(){
console.log(''miao miao'');
}
export { catSay };
//export default导出
const m = 100;
export default m;
//export defult const m = 100;// 这里不能写这种格式。
index.js 代码:
//index.js
''use strict''
var express = require(''express'');
var router = express.Router();
import { dogSay, catSay } from ''./testEs6Export''; //导出了 export 方法
import m from ''./testEs6Export''; //导出了 export default
import * as testModule from ''./testEs6Export''; //as 集合成对象导出
/* GET home page. */
router.get(''/'', function(req, res, next) {
dogSay();
catSay();
console.log(m);
testModule.dogSay();
console.log(testModule.m); // undefined , 因为 as 导出是 把 零散的 export 聚集在一起作为一个对象,而export default 是导出为 default属性。
console.log(testModule.default); // 100
res.send(''恭喜你,成功验证'');
});
module.exports = router;
ImportError: DLL load failed: 找不到指定的模块;ImportError: numpy.core.multiarray failed to import 报错解决
python程序运行出错,出错的两行主要信息如下:
ImportError: DLL load Failed: 找不到指定的模块
ImportError: numpy.core.multiarray Failed to import
(但是import numpy包又没问题,估计是使用numpy的第三方出问题了。反正numpy逃不了责任!)
--------------------------------------------------------
在网上一番搜索,发现对于第一个错误而且有import numpy报错:ImportError: DLL load Failed: 找不到指定的模块。
有篇博客讲的很详细,大家可以参考一下:
https://blog.csdn.net/zhangpeterx/article/details/84872125
但是并没有解决我的问题(哭);
然后针对第二个错误搜索一番,发现另一篇博客:
https://blog.csdn.net/Mr_sdhm/article/details/79157075
-------------------------------------------------------下面重点来了
参考上面博客,我的解决方法如下:
(PS:一定要把Anaconda环境自带的包 和Anaconda目录env下tensorflow环境中安装的区分开!)
如果是Anaconda下的tensorflow环境中的程序出错,则
1.打开anaconda prompt,输入激活tensorflow的语句,一般是:
activate tensorflow
在tensorfllow环境下,使用python:
import numpy print(numpy.__path__)
打印出的就是numpy安装的路径,注意:Anaconda环境下也有一个numpy,和这个是两个不同的。
-----------------------------------------------------------
----------------------------------------------------------------------
2.根据这个路径,找到numpy包,删除掉
3.再回到刚刚已经激活tensorflow环境的prompt中,使用python,输入:
pip install -U numpy
安装numpy包,再运行程序就没有报错了。
import、require 、export、export default、exports、module exports
对比表
名称 | es6 | node | 说明 | 使用 |
---|---|---|---|---|
export | √ | |||
export default | √ | |||
import | √ | export/export default导出, import导入 | ||
exports | √ | |||
module.exports | √ | exports = module.exports = {} | ||
require | √ | √ | module.exports导出, require导入 |
export 与 export default
二者关系
es6中使用
名称 | 相同 | 不同 |
---|---|---|
export | 可导出常量、函数、文件、模块等 | 1. 可以有多个export 2.导入时要加{} |
export default | 可导出常量、函数、文件、模块等 | 1.一个文件中只有一个export default 2.导入时不加{} |
使用举例
//export导出
//methods.js
export function methods(){
console.log(''123'')
}
//export导入
import {methods} from ''./methods''
//export default导出
//methods.js
export default function methods(){
console.log(''456'')
}
//export default导入
import methods from ''./methods''
exports 与 module.exports
二者关系
node中使用
exports = module.exports = {}
了解更多,可参考文章:https://cnodejs.org/topic/523...
使用举例
//module.exports导出
//en.js
module.exports = {
login: {
title: ''Login'',
btn: ''submit''
}
}
//require导入
require(''''./en)
import 与 require
- import 是 es6的语法
import 与 export / export default 搭配,实现导入/导出 - require 是 es6 、node都有的语法
require 与 module.exports 搭配,实现导入/导出
参考文章
https://segmentfault.com/a/11...
https://cnodejs.org/topic/523...
module.exports 、 exports、export、export default 区别
module.exports 与 exports
-
一个文件就是一个模块,即module;这个文件有自己的作用域,在一个文件里面定义的变量、函数、类等都是私有的,对其他文件不可见
-
在每个模块内部,module变量即为当前模块,这个变量是一个对象,他的exports属性是对外的接口属性,加载这个模块,其实就是加载该模块的module.exports属性;
''use strict''; var a = 2; var b = 3; function methodTools() { } module.exports.fa = a; module.exports.fb = b;
上述代码通过module.exports对外暴露 fa、fb两个变量
外部用require、或者import则可以访问到fa、fb两个变量了
-
exports:为了方便,Node为每个模块提供一个exports变量,指向module.exports。这等同在每个模块头部,有一行这样的命令。
var exports = module.exports;
即 exports 为 module.exports。所以通过exports可以访问到fa、fb了
''use strict''; var a = 2; var b = 3; function methodTools() { } exports.fa = a; exports.fb = b;
-
注意exports、module.exports 导出的是module;如果外部文件引用
-
import引用
import example from ''./common/appMethod''; let { fa, fb } = example; console.log(fa); //2
-
require引用
var example = require(''./common/appMethod'') console.log(example.fa);//2 console.log(example);//{fa: 2, fb: 3}
-
export 、 export default
-
ES6使用 export 和 import 来导出、导入模块
// a文件 // ''use strict''; var a = 2; var b = 3; function methodTools() { } export { a, b }; // b文件导入a文件 var example = require(''./common/appMethod'') console.log(example); // 输出信息 {__esModule: true} a: 2 b: 3 // c 文件导入a文件 import { a, c } from ''./common/appMethod''; console.log(a, c); // 输出信息 2 undefined
-
使用export default命令,为模块指定默认输出
-
模块文件
''use strict''; var a = 2; var b = 3; export { a, b }; export default a;
-
导入模块
import { a, b, c, d, j } from ''./common/appMethod''; import def_M from ''./common/appMethod''; console.log(a, b, c, d, j, def_M); 输出信息 2 3 undefined undefined undefined 2
-
-
如果使用export default,不能使用结构赋值获取到导出变量
-
使用require
var example = require(''./common/appMethod''); console.log(example); // 输出 {default: 2, __esModule: true} a: 2, b: 3, default: 2,
我们今天的关于sqoop:【error】从hdfs导入到mysql 报ERROR tool.ExportTool: Error during export: Export job failed!的分享就到这里,谢谢您的阅读,如果想了解更多关于exports、module.exports和export、export default到底是咋回事、ImportError: DLL load failed: 找不到指定的模块;ImportError: numpy.core.multiarray failed to import 报错解决、import、require 、export、export default、exports、module exports、module.exports 、 exports、export、export default 区别的相关信息,可以在本站进行搜索。
本文标签: