Datax 的基本操作

2023-11-12

1. Datax

简介:
DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、
Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。

开源地址:
https://github.com/alibaba/DataX

1.1 测试datax 执行环境:

执行命令

[root@bigdata001 bin]# python datax.py /opt/module/datax/job/job.json
Time 0.024s |  All Task WaitReaderTime 0.044s | Percentage 100.00%
2021-10-30 21:12:38.209 [job-0] INFO  AbstractScheduler - Scheduler accomplished all tasks.
2021-10-30 21:12:38.210 [job-0] INFO  JobContainer - DataX Writer.Job [streamwriter] do post work.
2021-10-30 21:12:38.210 [job-0] INFO  JobContainer - DataX Reader.Job [streamreader] do post work.
2021-10-30 21:12:38.210 [job-0] INFO  JobContainer - DataX jobId [0] completed successfully.
2021-10-30 21:12:38.210 [job-0] INFO  HookInvoker - No hook invoked, because base dir not exists or is a file: /opt/module/datax/hook
2021-10-30 21:12:38.211 [job-0] INFO  JobContainer - 
	 [total cpu info] => 
		averageCpu                     | maxDeltaCpu                    | minDeltaCpu                    
		-1.00%                         | -1.00%                         | -1.00%
                        

	 [total gc info] => 
		 NAME                 | totalGCCount       | maxDeltaGCCount    | minDeltaGCCount    | totalGCTime        | maxDeltaGCTime     | minDeltaGCTime     
		 PS MarkSweep         | 0                  | 0                  | 0                  | 0.000s             | 0.000s             | 0.000s             
		 PS Scavenge          | 0                  | 0                  | 0                  | 0.000s             | 0.000s             | 0.000s             

2021-10-30 21:12:38.211 [job-0] INFO  JobContainer - PerfTrace not enable!
2021-10-30 21:12:38.212 [job-0] INFO  StandAloneJobContainerCommunicator - Total 100000 records, 2600000 bytes | Speed 253.91KB/s, 10000 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.024s |  All Task WaitReaderTime 0.044s | Percentage 100.00%
2021-10-30 21:12:38.212 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2021-10-30 21:12:28
任务结束时刻                    : 2021-10-30 21:12:38
任务总计耗时                    :                 10s
任务平均流量                    :          253.91KB/s
记录写入速度                    :          10000rec/s
读出记录总数                    :              100000
读写失败总数                    :                   0

[root@bigdata001 bin]# 

2. 通过mysql 执行导入到hive 中

2.1 mysql 表

CREATE TABLE `Flink_iceberg` (
  `id` bigint(64) DEFAULT NULL,
  `name` varchar(64) DEFAULT NULL,
  `age` int(20) DEFAULT NULL,
  `dt` varchar(64) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1

2.2 hive表

create table Flink_iceberg(
deptno int, dname string, loc string
)
partitioned by (dt string)
row format delimited fields terminated by ',';

2.3 mysqlToHive.json

{
  "job": {
    "setting": {
      "speed": {
        "channel": 3,
        "byte": 1048576
      },
      "errorLimit": {
        "record": 0,
        "percentage": 0.02
      }
    },
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "username": "root",
            "password": "123456",
            "column": [
              "`id`",
              "`name`",
              "`age`",
              "`dt`"
            ],
            "splitPk": "",
            "connection": [
              {
                "table": [
                  "Flink_iceberg"
                ],
                "jdbcUrl": [
                  "jdbc:mysql://192.168.1.180:3306/test"
                ]
              }
            ]
          }
        },
        "writer": {
          "name": "hdfswriter",
          "parameter": {
            "defaultFS": "hdfs://192.168.1.130:9000",
            "fileType": "text",
            "path": "/user/hive/warehouse/db_hive.db/flink_iceberg/",
            "fileName": "dt",
            "writeMode": "append",
            "fieldDelimiter": ",",
            "column": [
              {
                "name": "deptno",
                "type": "int"
              },
              {
                "name": "dname",
                "type": "string"
              },
              {
                "name": "loc",
                "type": "string"
              },
              {
                "name": "dt",
                "type": "string"
              }
            ]
          }
        }
      }
    ]
  }
}

2.4 执行命令:

python datax.py /opt/module/datax/job/mysqlToHive.json

[root@bigdata001 bin]# python datax.py /opt/module/datax/job/mysqlToHive.json 

DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.


2021-10-30 23:17:53.534 [main] INFO  VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
2021-10-30 23:17:53.540 [main] INFO  Engine - the machine info  => 
2021-10-30 23:18:04.877 [job-0] INFO  JobContainer - PerfTrace not enable!
2021-10-30 23:18:04.878 [job-0] INFO  StandAloneJobContainerCommunicator - Total 17 records, 481 bytes | Speed 48B/s, 1 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
2021-10-30 23:18:04.878 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2021-10-30 23:17:53
任务结束时刻                    : 2021-10-30 23:18:04
任务总计耗时                    :                 11s
任务平均流量                    :               48B/s
记录写入速度                    :              1rec/s
读出记录总数                    :                  17
读写失败总数                    :                   0

3. mysql 同步hdfs

mysql 建表

CREATE TABLE `t_user` (
  `id` bigint(10) NOT NULL,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

/*Data for the table `t_user` */

insert  into `t_user`(`id`,`name`) values (1,'flink'),(2,'slave'),(3,'hive'),(4,'flink04'),(5,'hbase');

3.1 mysqlToHdfs.json

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "column": [
                            "id",
                            "name"
                        ],
                        "connection": [
                            {
                                "jdbcUrl": [
                                    "jdbc:mysql://192.168.1.180:3306/test"
                                ],
                                "table": [
                                    "t_user"
                                ]
                            }
                        ],
                        "password": "123456",
                        "username": "root"
                    }
                },
                "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "column": [
                            {
                                "name": "id",
                                "type": "int"
                            },
                            {
                                "name": "name",
                                "type": "string"
                            }
                        ],
                        "defaultFS": "hdfs://192.168.1.130:9000",
                        "fieldDelimiter": "	",
                        "fileName": "t_user.txt",
                        "fileType": "text",
                        "path": "/",
                        "writeMode": "append"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": "1"
            }
        }
    }
}

3.2 执行

命令: [root@bigdata001 bin]# ./datax.py /opt/module/datax/job/mysqlToHdfs.json

e [hdfs://192.168.1.130:9000/t_user.txt__488a017c_0f35_44fa_8a2c_f38dbb92c02a].
2021-10-30 21:21:11.672 [job-0] INFO  HdfsWriter$Job - start delete tmp dir [hdfs://192.168.1.130:9000/__43469efa_d0fd_4339_9656_74a085dc4321] .
2021-10-30 21:21:11.693 [job-0] INFO  HdfsWriter$Job - finish delete tmp dir [hdfs://192.168.1.130:9000/__43469efa_d0fd_4339_9656_74a085dc4321] .
2021-10-30 21:21:11.693 [job-0] INFO  JobContainer - DataX Reader.Job [mysqlreader] do post work.
2021-10-30 21:21:11.693 [job-0] INFO  JobContainer - DataX jobId [0] completed successfully.
2021-10-30 21:21:11.694 [job-0] INFO  HookInvoker - No hook invoked, because base dir not exists or is a file: /opt/module/datax/hook
2021-10-30 21:21:11.797 [job-0] INFO  JobContainer - 
	 [total cpu info] => 
		averageCpu                     | maxDeltaCpu                    | minDeltaCpu                    
		-1.00%                         | -1.00%                         | -1.00%
                        

	 [total gc info] => 
		 NAME                 | totalGCCount       | maxDeltaGCCount    | minDeltaGCCount    | totalGCTime        | maxDeltaGCTime     | minDeltaGCTime     
		 PS MarkSweep         | 1                  | 1                  | 1                  | 0.018s             | 0.018s             | 0.018s             
		 PS Scavenge          | 1                  | 1                  | 1                  | 0.010s             | 0.010s             | 0.010s             

2021-10-30 21:21:11.798 [job-0] INFO  JobContainer - PerfTrace not enable!
2021-10-30 21:21:11.798 [job-0] INFO  StandAloneJobContainerCommunicator - Total 5 records, 31 bytes | Speed 3B/s, 0 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
2021-10-30 21:21:11.799 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2021-10-30 21:21:00
任务结束时刻                    : 2021-10-30 21:21:11
任务总计耗时                    :                 11s
任务平均流量                    :                3B/s
记录写入速度                    :              0rec/s
读出记录总数                    :                   5
读写失败总数                    :                   0

[root@bigdata001 bin]# 

3.4 查看hdfs 执行结果

[root@bigdata001 bin]# hdfs dfs -ls /
Found 8 items
-rw-r--r--   3 root supergroup         71 2020-07-03 19:47 /dept.txt
drwxr-xr-x   - root supergroup          0 2020-05-10 01:03 /flume
drwxr-xr-x   - root supergroup          0 2020-07-03 12:01 /hbase
drwxr-xr-x   - root supergroup          0 2020-02-15 00:45 /origin_data
-rw-r--r--   3 root supergroup         41 2021-10-30 21:21 /t_user.txt__488a017c_0f35_44fa_8a2c_f38dbb92c02a
drwxr-xr-x   - root supergroup          0 2020-04-06 19:02 /tez
drwx------   - root supergroup          0 2020-04-06 18:21 /tmp
drwxr-xr-x   - root supergroup          0 2020-04-06 19:25 /user
[root@bigdata001 bin]# hdfs dfs -cat /t_user.txt__488a017c_0f35_44fa_8a2c_f38dbb92c02a
1	flink
2	slave
3	hive
4	flink04
5	hbase
[root@bigdata001 bin]# 

t_user.txt__488a017c_0f35_44fa_8a2c_f38dbb92c02a HdfsWriter 实际执行时会在该文件名后添加随机的后缀作为每个线程写入实际文件名

4性能优化:

job.setting.speed.channel : channel 并发数
并发数 = taskGroup 的数量 * 每个 TaskGroup 并发执行的 Task 数 (默认为 5)

job.setting.speed.record : 2 全局配置 channel 的 record 限速
Channel 个数 = 全局 Byte 限速 / 单 Channel Byte 限速
job.setting.speed.byte: 全局配置 channel 的 byte 限速
core.transport.channel.speed.record:单个 channel 的 record 限速
core.transport.channel.speed.byte:单个 channel 的 byte 限速

5. jvm 性能优化

调整 JVM xms xmx 参数的两种方式:一种是直接更改 datax.py 脚本;另一种是在启动
的时候,加上对应的参数
python datax/bin/datax.py --jvm="-Xms8G -Xmx8G" XXX.json

6. 可以借助开源工具

datax
DataX Web是在DataX之上开发的分布式数据同步工具,提供简单易用的 操作界面,降低用户使用DataX的学习成本,缩短任务配置时间,避免配置过程中出错。用户可通过页面选择数据源即可创建数据同步任务,支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源,RDBMS数据源可批量创建数据同步任务,支持实时查看数据同步进度及日志并提供终止同步功能,集成并二次开发xxl-job可根据时间、自增主键增量同步数据。

任务"执行器"支持集群部署,支持执行器多节点路由策略选择,支持超时控制、失败重试、失败告警、任务依赖,执行器CPU.内存.负载的监控等等。后续还将提供更多的数据源支持、数据转换UDF、表结构同步、数据同步血缘等更为复杂的业务场景。

https://pan.baidu.com/share/init?surl=3yoqhGpD00I82K4lOYtQhg cpsk

6.1 安装

开始部署
1)解压安装包
在选定的安装目录,解压安装包

tar -zxvf datax-web-{VERSION}.tar.gz
2)执行一键安装脚本
进入解压后的目录,找到bin目录下面的install.sh文件,如果选择交互式的安装,则直接执行

./bin/install.sh
在交互模式下,对各个模块的package压缩包的解压以及configure配置脚本的调用,都会请求用户确认,可根据提示查看是否安装成功,如果没有安装成功,可以重复尝试; 如果不想使用交互模式,跳过确认过程,则执行以下命令安装

./bin/install.sh --force
3)数据库初始化
如果你的服务上安装有mysql命令,在执行安装脚本的过程中则会出现以下提醒:

Scan out mysql command, so begin to initalize the database
Do you want to initalize database with sql: [{INSTALL_PATH}/bin/db/datax-web.sql]? (Y/N)y
Please input the db host(default: 127.0.0.1): 
Please input the db port(default: 3306): 
Please input the db username(default: root): 
Please input the db password(default: ): 
Please input the db name(default: exchangis)
按照提示输入数据库地址,端口号,用户名,密码以及数据库名称,大部分情况下即可快速完成初始化。 如果服务上并没有安装mysql命令,则可以取用目录下/bin/db/datax-web.sql脚本去手动执行,完成后修改相关配置文件

vi ./modules/datax-admin/conf/bootstrap.properties
#Database
#DB_HOST=
#DB_PORT=
#DB_USERNAME=
#DB_PASSWORD=
#DB_DATABASE=
按照具体情况配置对应的值即可。

4) 配置
安装完成之后,

在项目目录: /modules/datax-admin/bin/env.properties 配置邮件服务(可跳过)

MAIL_USERNAME=""
MAIL_PASSWORD=""
此文件中包括一些默认配置参数,例如:server.port,具体请查看文件。

在项目目录下/modules/datax-execute/bin/env.properties 指定PYTHON_PATH的路径

vi ./modules/{module_name}/bin/env.properties

### 执行datax的python脚本地址
PYTHON_PATH=

### 保持和datax-admin服务的端口一致;默认是9527,如果没改datax-admin的端口,可以忽略
DATAX_ADMIN_PORT=

此文件中包括一些默认配置参数,例如:executor.port,json.path,data.path等,具体请查看文件。

5)启动服务
- 一键启动所有服务
./bin/start-all.sh
中途可能发生部分模块启动失败或者卡住,可以退出重复执行,如果需要改变某一模块服务端口号,则:

vi ./modules/{module_name}/bin/env.properties
找到SERVER_PORT配置项,改变它的值即可。 当然也可以单一地启动某一模块服务:

./bin/start.sh -m {module_name}
- 一键取消所有服务
./bin/stop-all.sh
当然也可以单一地停止某一模块服务:

./bin/stop.sh -m {module_name}

65.访问地址:

http://192.168.1.130:9527/index.html#/dashboard
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Datax 的基本操作 的相关文章

  • where 子句中的双 %% ?

    我有一个 where 子句 如下例所示 WHERE subject LIKE chef AND dep LIKE psy 使用 1 或 2 符号有什么区别 我知道其中一个的含义 通配符 但不知道第二个添加的功能是什么 该查询可能是一个拼写错
  • 如何使用 SharedPreferences 保存多个值?

    我正在开发一个字典应用程序 在我的应用程序中 我假设用户想要保存最喜欢的单词 我决定使用共享首选项保存这些值 我知道 SQLite 和文件更好 但我坚持使用 SharedPreferences 所以继续使用它 下面是我的代码 Overrid
  • 索引在 NOT IN 或 <> 子句中起作用吗?

    我读过 至少 Oracle 数据库中的普通索引基本上是 B 树结构 因此存储处理适当根节点的记录 小于 根的记录被迭代地存储在树的左侧部分 而 大于 根的记录被存储在右侧部分 正是这种存储方法有助于通过树遍历实现更快的扫描 因为深度和广度都
  • 使用实体框架、代码优先方法解决结构问题

    我目前正在使用 EF 和代码优先方法从现有系统构建数据库 最好对 核心 类进行最小的更改 因此 我想找到 Structs 和 EF 的解决方法 是否可以以任何方式将 Struct 包装到类中 以便 EF 可以使用此 Struct 中的数据
  • SQLite:从命令行仅将模式转储到 .sql 文件中

    我正在尝试转储架构test db仅 即没有数据 到名为的文件中schema sql从 OS X 中的命令行 无需启动 sqlite3 我知道我能做到 sqlite3 open test db output schema sql schema
  • 将 python 列表存储到数据库的最佳方法?

    将 python 数字列表 例如 4 7 10 39 91 存储到数据库的最佳方法是什么 我使用 Pyramid 框架和 SQLAlchemy 与数据库进行通信 Thanks 您可以使用json http docs python org l
  • 如何按行扩展数组值!!使用 Hive SQL

    我有一个有 4 列的表 其中一列 项目 类型是 ARRAY 其他是字符串 ID items name loc id1 item1 item2 item3 item4 item5 Mike CT id2 item3 item7 item4 i
  • 无法从 CursorWindow 读取第 0 行,第 -1 列?

    我在使用数据库时遇到问题 当我运行 SQLView java 时 出现致命异常 java lang RuntimeException Unable to start activity ComponentInfo com jacob eind
  • 在 Python 中打开 Alteryx .yxdb 文件?

    有没有办法将 yxdb Alteryx 数据库文件 导入到 Pandas Python 中 而不使用 Alteryx 作为中间人 简短的回答是否定的 目前还不行 更长的答案 yxdb 支持的原始 C 是可以在 github 上找到 http
  • 高负载应用程序的数据库可扩展性?

    我见过一些应用程序拥有集群 Web 服务器 例如 10 到 20 个服务器 以具有可扩展性 可以在其中分发 在网络服务器之间加载 但我总是看到所有网络服务器都使用单个数据库 现在考虑任何电子商务或铁路 Web 应用程序 其中有数百万用户在任
  • Oracle SQL 查询日期格式

    我总是对 ORACLE SQL 查询中的日期格式感到困惑 并花几分钟时间去谷歌 有人可以向我解释当数据库表中有不同格式的日期时解决问题的最简单方法吗 例如 我有一个日期列为 ES DATE 保存的数据为 27 APR 12 11 52 48
  • Spark on Hive SQL 查询错误 NoSuchFieldError: HIVE_STATS_JDBC_TIMEOUT

    针对 Hive 2 1 0 提交 Spark 1 6 0 SQL 应用程序时出现错误 Exception in thread main java lang NoSuchFieldError HIVE STATS JDBC TIMEOUT a
  • 直接从表中选择和视图之间的区别

    直接从表中选择数据或从视图中选择数据有什么区别 每一种的最佳用途是什么 根据微软的说法 如果你使用的话会有性能优势indexedSQL Server 2000 2005 2008 中的视图 索引视图可以通过以下方式提高查询性能1 可以预先计
  • 通过网络恢复数据库备份

    如何通过网络使用 SQL Server 2005 恢复数据库备份 我记得以前这样做过 但这样做的方式有些奇怪 您几乎没有选择使用网络文件作为备份源 在与 MS SQL Server 相同的用户下映射网络驱动器 路径 托管文件 使用 xp c
  • 在 Codeigniter 中从其他数据库切换动态数据库

    mi 文件 config php 是 active group default active record TRUE db master 是唯一的数据库 db master hostname localhost db master user
  • Hive:在查询中将 array 转换为 array

    我有两张桌子 create table a 1 array
  • Delphi XE5 FireDAC 错误:无法加载供应商库 [libmysql.dll 或 libmysqld.dll]

    我在 Windows 7 64 位上使用 Delphi XE5 只是尝试 FireDAC 组件 我正在使用一个 TFDConnection 组件连接到本地 MySQL 数据库 v5 6 15 我已经将 libmysql dll 32位 v5
  • mysql 中 INSERT 语句的计算列

    假设我想要一个表来记录其他表中的日期和列数 或者任何类型的数学 字符串连接等 CREATE TABLE log id INTEGER NOT NULL AUTO INCREMENT date DATETIME NOT NULL count
  • 无法获取 ConfigBean 中实体的正确 ID - Java EE

    我正在构建一个药房管理应用程序 每个药房都需要一名管理员 约束是这样的 public class Pharmacy implements Serializable Id GeneratedValue strategy GenerationT
  • 无法通过 Hbase 客户端从 Titan 连接到 Google Bigtable

    我正在尝试使用 Hadoop 2 HBase 1 0 2 客户端 连接到 Titan 1 0 0 可在https github com thinkaurelius titan wiki Downloads https github com

随机推荐

  • 关于redis密码

    如何更改密码 直接配置文件里更改 配置文件里开放 requirepass 之后客户端更改 用Redis命令查询密码 可以使用以下Redis命令来查询密码 config get requirepass 得到的结果第一行固定是requirepa
  • 设计模式-备忘录模式(Memento Pattern)

    文章目录 前言 一 备忘录模式的概念 二 备忘录模式的实现 三 备忘录优缺点 优点 缺点 总结 前言 备忘录模式 Memento Pattern 是一种行为型设计模式 它用于捕获和存储对象的内部状态 以便在以后可以恢复到先前的状态 备忘录模
  • pthread_detach函数

    int pthread detach pthread t thread 成功 0 失败 错误号 作用 从状态上实现线程分离 注意不是指该线程独自占用地址空间 线程分离状态 指定该状态 线程主动与主控线程断开关系 线程结束后 不会产生僵尸线程
  • jwt编码解码

    import jwt 创建 JWT payload user id 1234 secret key your secret key 密钥 用于签名和验证 algorithm HS256 签名算法 token jwt encode paylo
  • NPM导入模块报错

    npm WARN enoent ENOENT no such file or directory open C Program Files nodejs package json 找不到package json文件 一般情况下npm安装时都
  • python 删除文件、清空目录的方法总结

    Python os remove 方法 os remove 方法用于删除指定路径的文件 如果指定的路径是一个目录 将抛出OSError 在Unix Windows中有效 以下实例演示了 remove 方法的使用 usr bin python
  • python---面向对象(一)

    类和对象 面向对象编程的2个非常重要的概念 类和对象 对象是面向对象编程的核心 在使用对象的过程中 为了将具有共同特征和行为的一组对象抽象定义 提出了另外一个新的概念 类 类就相当于制造飞机时的图纸 用它来进行创建的飞机就相当于对象 类是抽
  • Visual Prompt

    始于NLP 简单来讲 Prompt就是对原来的输入文本进行一定的处理 使得在不改变预训练模型参数的情况下 相应任务的性能变高 例如 原输入文本为 I received the offer from ETH 对于文本分类 我们将其修改为I r
  • cassandra ssdb mongodb

    IM系统 数据量大了mongodb性能有瓶颈 cassandra ssdb 配合使用来搞IM 写扩散 其实是双写 历史消息走cassandra ssdb保留7天的离线消息 cassandra ssdb mongodb
  • 简单的解压缩算法(华为od考试)

    题目描述 现需要实现一种算法 能将一组压缩字符串还原成原始字符串 还原规则如下 1 字符后面加数字N 表示重复字符N次 例如 压缩内容为A3 表示原始字符串为AAA 2 花括号中的字符串加数字N 表示花括号中的字符重复N次 例如压缩内容为
  • 12面魔方公式图解法_【高级篇】(三)三阶魔方CFOP高级玩法之——F2L

    一 F2L这一步要干什么 1 先了解一下 棱角对 和 槽位 的概念 棱角对 即由一个棱块和一个角块构成 是F2L的基本单元 共四组 槽位 给 棱角对 预留的位置 即 棱角对 最后需要插入的地方 棱角对 和 槽位 的概念 2 棱角对 是如何插
  • 在 Android Studio 2.2 中愉快地使用 C/C++

    使用 Android studio 你可以将 C 和 C 代码编译成 native library 然后打包到你的 APK 中 你的 Java 代码可以通过 Java Native Interface JNI 调用 native libra
  • Lite Git (II) - Initialize

    Lite Git II Initialize 前言 本专栏名为Lite Git 主要想与Pro Git对应 后者为Git官方指南 有兴趣 或者想了解更多细节的同学 请移步官网下载PDF版 本专栏主要为了让初出茅庐的同学更快 更合理地掌握Gi
  • RxJS——异步数据流的响应式编程库(适合新手入门)

    文章目录 RxJS概述 Redux VS RxJS RxJS核心概念解析 热观察和冷观察 merge combine合流 RXJS6 的变化 RxJS概述 RxJS 全称 Reactive Extensions for JavaScript
  • 产线发现扣上电池就开机问题分析

    作者 AirCity 2020 3 1 Aircity007 sina com 本文所有权归作者Aircity所有 现象 某SDM630平台手机项目首件 扣上电池 没有按Power键 主板立即开机 问题分析 初步排查开机信号 VBUS信号
  • 前端面试常问题(持续整理中)

    1 js的运行机制 js主要用途是和用户互动 用来操作DOM 所以js是单线程的 避免了同时操作同一个DOM的矛盾问题 2 arguments对象是什么 它是一个类数组对象 它有length属性 但是没有数组的方法 它是如何转化成数组的呢
  • linux操作系统安装时间怎么看,Linux操作系统版本要怎么查看

    Linux操作系统版本要怎么查看 Linux可安装在各种计算机硬件设备中 比如手机 平板电脑 路由器 视频游戏控制台 台式计算机 大型机和超级计算机 下面是小编收集Linux操作系统版本 希望大家认真阅读 1 查看内核版本命令 chen m
  • HUE+LDAP+HIVE,报错:PLAIN auth failed: Error validating LDAP user

    我已经为hue集成了ldap 本次为hive集成ldap认证之后 登录hue后 在hive editor中执行sql语句报如下错误 Bad status 3 PLAIN auth failed Error validating LDAP u
  • Web服务(04)——LAMP的简介与搭建+DISCUZ论坛

    文章目录 LAMP的简介与搭建 DISCUZ论坛 前言 一 LAMP的简介 二 Apache服务 三 LAMP服务的搭建 1 编译安装apache服务 2 编译安装MYSQL服务 3 编译安装PHP服务 四 搭建DISCUZ论坛 总结 LA
  • Datax 的基本操作

    1 Datax 简介 DataX 是一个异构数据源离线同步工具 致力于实现包括关系型数据库 MySQL Oracle等 HDFS Hive ODPS HBase FTP等各种异构数据源之间稳定高效的数据同步功能 开源地址 https git