GVKun编程网logo

sqoop:【error】从hdfs导入到mysql 报ERROR tool.ExportTool: Error during export: Export job failed!

2

本文将为您提供关于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!

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到底是咋回事

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 报错解决

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

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、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 区别的相关信息,可以在本站进行搜索。

本文标签: