DataPipeline与Datax有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataPipeline与Datax有啥区别?相关的知识,希望对你有一定的参考价值。

参考技术A

监控预警:

DataPipeline有可视化的过程监控,提供多样化的图表,辅助运维,故障问题可实时预警。

Datax:依赖工具日志定位故障问题,没有图形化运维界面和预警机制,需要自定义开发。

数据实时性:

DataPipeline:实时

Datax:定时

实施与售后服务:

DataPipeline:原厂实施和售后服务

Datax:阿里开源代码,需客户自动实施、开发、维护

数据清洗:

DataPipeline:围绕数据质量做轻量清洗

Datax:需要根据自身清晰规则编写清洗脚本,进行调用(DataX3.0 提供的功能)

自动断点续传

DataPipeline:支持

Datax:不支持

这些与声明类型有啥区别?

【中文标题】这些与声明类型有啥区别?【英文标题】:What is the difference between these to declaration types?这些与声明类型有什么区别? 【发布时间】:2016-12-20 17:57:53 【问题描述】:

我在 NodeJS 中使用 express 有以下代码 sn-ps: 1)

const app = express();
app.use('/index', function(req, res)
    res.sendFile(INDEX);
)
app.listen(portno);

2)

const app = express()
  .use('/index', (req, res) => res.sendFile(INDEX) )
  .listen(portno);

这两者有什么区别? 为什么我不能在第二次声明后使用app.use 命令? 另外,为什么下面的代码只适用于第二个:

const Socket = require('ws').Server;
const server = new Socket(server: app);
server.on('connection', function(socket) 
        console.log('New socket opened');
);

【问题讨论】:

【参考方案1】:

在第二种情况下,app 变量最终得到 .listen() 在其中返回的内容,即 Server 对象,而不是 app 对象。因此,当您稍后尝试使用分配给app 的错误内容来执行app.use() 时,它无法正常工作。

请记住,当您像这样链接方法时:

var x = a().b().c();

x 最终分配了链中最后一项的返回值。从技术上讲,这里发生的是 a() 执行并在其返回值上查找要执行的 .b() 属性,然后在其返回值上查找 .c() 方法,然后从中返回值分配给x

所以,在你的情况下:

const app = express().use(...).listen(...);

app 变量将包含来自.listen() 的返回值,这是一个Server 对象,而不是app 对象。而且,Server 对象没有您当时尝试使用的 .use() 方法。

您可以改为执行以下任一操作:

const app = express().use(...)
app.listen(...);

或者:

const app = express();
app.use(...).listen(...);

不过,如果您真的想同时保留 appserver 变量,大多数人都会这样做:

 const app = express();

 // define various routes and middleware
 app.use(...);
 app.use(...);
 app.use(...);

 // start the server
 const server = app.listen(...);

【讨论】:

以上是关于DataPipeline与Datax有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

C语言里符号常量和常变量有啥区别?

4/3 和 4/3.0 有啥区别? [复制]

用#define 定义的常量与变量有啥区别,啥时候应该使用define定义符号常量

C语言里符号常量和常变量有啥区别?

价值迭代和策略迭代有啥区别? [关闭]

辐角主值和辐角有啥区别