Casos de importación y exportación de datos entre DataX y MongoDB

Casos de importación y exportación de datos entre DataX y MongoDB



0. escribir delante

  • Descripción de la información de la versión:

La base de datos MySQL y DataX están instaladas en una máquina node01, mientras que MongoDB está instalado en una máquina node02

Versión de DataX: DataX3.0 (versión de código abierto)

Versión de MongoDB: MongoDB-5.0.2 (instalado en entorno Linux)

Versión de Linux: CentOS7.5

1. Conocimiento previo de MongoDB

1.1 Explicación detallada de los conceptos básicos

1.1.1 Base de datos

Se pueden crear múltiples bases de datos en un mongodb. La base de datos predeterminada para MongoDB es "db", que se almacena en el directorio de datos. Una sola instancia de MongoDB puede contener múltiples bases de datos independientes, cada una con sus propias colecciones y permisos, y las diferentes bases de datos se ubican en diferentes archivos.

Las operaciones comunes son las siguientes

1) Mostrar todas las bases de datos

> show dbs     
admin   0.000GB 
config  0.000GB 
local   0.000GB 

Analizado de la siguiente manera:

  • admin: desde la perspectiva de los permisos, esta es la base de datos "raíz". Si se agrega un usuario a esta base de datos, el usuario hereda automáticamente todos los permisos de la base de datos. Algunos comandos específicos del lado del servidor solo se pueden ejecutar desde esta base de datos, como enumerar todas las bases de datos o apagar el servidor.

  • local: estos datos nunca se replican y se pueden usar para almacenar colecciones arbitrarias limitadas a un solo servidor local

  • config: cuando se usa Mongo para la configuración de fragmentación, la base de datos de configuración se usa internamente para guardar información sobre la fragmentación.

2) Mostrar la base de datos utilizada actualmente

 > db 
 test     

3) cambiar la base de datos

> use local 
switched to    db local    
> db 
local   

1.1.2 Colecciones

Una colección es un grupo de documentos MongoDB, similar a una tabla en MySQL.

Las colecciones existen en la base de datos y las colecciones no tienen una estructura fija, lo que significa que puede insertar datos de diferentes formatos y tipos en las colecciones, pero generalmente los datos que insertamos en las colecciones tendrán cierta relevancia.

El método createCollection() se usa en MongoDB para crear colecciones. Veamos cómo crear una colección:

Formato de gramática:

db.createCollection(name, options)                                        

Descripción de parámetros:

  • name: el nombre de la colección a crear

  • opciones: Parámetros opcionales, especifique opciones relacionadas con el tamaño de la memoria y el índice, con los siguientes parámetros:

campo tipo describir
tapado booleano (opcional) Si es verdadero, crea una colección limitada. Una colección fija es una colección con un tamaño fijo que sobrescribe automáticamente los documentos más antiguos cuando se alcanza el valor máximo. Cuando el valor es verdadero , se debe especificar el parámetro de tamaño .
autoIndexId booleano (Opcional) Si es verdadero, crea automáticamente un índice en el campo _id. El valor predeterminado es falso.
tamaño valor (Opcional) Especifique un valor máximo (en bytes) para colecciones limitadas. Si capped es true , este campo también debe especificarse.
máximo valor (Opcional) Especifica el número máximo de documentos contenidos en una colección limitada.

Caso 1: Cree una colección de whybigdata en la biblioteca de prueba

> use test switched to db test
> db.createCollection("whybigdata")
{ "ok" : 1 }
> show collections 
Whybigdata

// 插入数据
> db.whybigdata.insert({
   
   "name":"whybigdata","url":"www.whybigdata.com"}) WriteResult({ "nInserted" : 1 })
// 查看数据
> db.whybigdata.find()
{ "_id" : ObjectId("5d0314ceecb77ee2fb2d7566"), "name" : "whybigdata", "url" : "www.whybigdata.com" }

Instrucciones de análisis:

ObjectId es similar a una clave primaria única, que se puede generar y clasificar rápidamente. Contiene 12 bytes (predeterminado), una cadena compuesta por 24 números hexadecimales (cada byte puede almacenar dos números hexadecimales), lo que significa:

  • Los primeros 4 bytes representan la marca de tiempo unix de creación

  • Los siguientes 3 bytes son el código de identificación de la máquina

  • Los siguientes dos bytes forman el PID de la identificación del proceso

  • Los últimos tres bytes son números aleatorios.

Caso 2: Crear una colección fija mycol

> db.createCollection("mycol",{ capped : true,autoIndexId : true,size : 6142800, max : 1000})
> show tables; 
whybigdata
mycol

Caso 3: crear colecciones automáticamente

En MongoDB, no necesita crear colecciones. MongoDB crea colecciones automáticamente cuando inserta algunos documentos.

> db.mycol2.insert({
   
   "name":"whybigdata"}) WriteResult({ "nInserted" : 1 })
> show collections 
whybigdata
mycol 
mycol2

Caso 4: Eliminar colección

> db.mycol2.drop() 
True    
> show tables; 
whybigdata    
mycol    

1.1.3 Documentos

Un documento es un conjunto de pares clave-valor. Los documentos de MongoDB no necesitan establecer los mismos campos, y los mismos campos no necesitan tener el mismo tipo de datos, lo cual es muy diferente de las bases de datos relacionales y también es una característica muy destacada de MongoDB.

Un ejemplo sencillo:

{
    
    "name":"whybigdata"}

Aviso:

  • Los pares clave/valor en un documento están ordenados.

  • MongoDB distingue entre mayúsculas y minúsculas.

  • Los documentos de MongoDB no pueden tener claves duplicadas.

  • Las claves de documento son cadenas. Con pocas excepciones, las claves pueden usar caracteres UTF-8 arbitrarios.

2. Caso de importación y exportación de DataX

2.1 Leer datos de MongoDB e importarlos a HDFS

2.1.1 Escribir archivos de configuración

[whybigdata@node01 datax]$ vim job/mongdb2hdfs.json
{
    
    
    "job": {
    
    
        "content": [
            {
    
    
                "reader": {
    
    
                    "name": "mongodbreader",
                    "parameter": {
    
    
                        "address": ["node02:27017"],
                        "collectionName": "whybigdata",
                        "column": [
							{
    
    
								"name":"name",
								"type":"string"
							},
							{
    
    
								"name":"url",
								"type":"string"
							}
						],
                        "dbName": "test",
                    }
                },
                "writer": {
    
    
                    "name": "hdfswriter",
                    "parameter": {
    
    
                        "column": [
							{
    
    
								"name":"name",
								"type":"string"
							},
							{
    
    
								"name":"url",
								"type":"string"
							}
						],
                        "defaultFS": "hdfs://node01:8020",
                        "fieldDelimiter": "\t",
                        "fileName": "mongo.txt",
                        "fileType": "text",
                        "path": "/datax-out",
                        "writeMode": "append"
                    }
                }
            }
        ],
        "setting": {
    
    
            "speed": {
    
    
                "channel": "1"
            }
        }
    }
}

Análisis de parámetros Mongodbreader

  • dirección: información de la dirección de datos de MongoDB, debido a que MonogDB puede ser un clúster, la información del puerto IP debe proporcionarse en forma de matriz Json. 【Requerido】

  • nombre de usuario: nombre de usuario de MongoDB. 【Opcional】

  • contraseña de usuario: contraseña de MongoDB. 【Opcional】

  • collectionName: el nombre de la colección de MonogoDB. 【Requerido】

  • columna: nombre de la columna del documento MongoDB. 【Requerido】

  • nombre: el nombre de la Columna. 【Requerido】

  • tipo: el tipo de Columna. 【Opcional】

  • splitter: debido a que MongoDB admite tipos de matriz, pero el marco Datax en sí no admite tipos de matriz, por lo que los tipos de matriz leídos por mongoDB deben combinarse en cadenas a través de este separador. 【Opcional】

2.1.2 Ejecución

[whybigdata@node01 datax]$ bin/datax.py job/mongdb2hdfs.json

2.1.3 Ver resultados

inserte la descripción de la imagen aquí

2.2 Leer datos de MongoDB en MySQL

2.2.1 Crear una tabla en MySQL

mysql> create table whybigdata(name varchar(20),url varchar(20));

2.2.2 Escribir archivos de configuración de DataX

[whybigdata@node01 datax]$ vim job/mongodb2mysql.json
{
    
    
    "job": {
    
    
        "content": [
            {
    
    
                "reader": {
    
    
                    "name": "mongodbreader",
                    "parameter": {
    
    
                        "address": ["node02:27017"],
                        "collectionName": "whybigdata",
                        "column": [
							{
    
    
								"name":"name",
								"type":"string"
							},
							{
    
    
								"name":"url",
								"type":"string"
							}
						],
                        "dbName": "test",
                    }
                },
                "writer": {
    
    
                    "name": "mysqlwriter",
                    "parameter": {
    
    
                        "column": ["*"],
                        "connection": [
                            {
    
    
                                "jdbcUrl": "jdbc:mysql://node01:3306/datax",
                                "table": ["mongo"]
                            }
                        ],
                        "password": "123456",
                        "username": "root",
                        "writeMode": "insert"
                    }            
                }
            }
        ],
        "setting": {
    
    
            "speed": {
    
    
                "channel": "1"
            }
        }
    }
}

2.2.3 Ejecución

[whybigdata@node01 datax]$ bin/datax.py job/mongodb2mysql.json   

2.2.4 Ver resultados

mysql> select * from whybigdata;
+	+	+
| name	| url	|
+	+	+
| whybigdata | www.whybigdata.com |
+	+	+

¡El texto completo ha terminado!

Supongo que te gusta

Origin blog.csdn.net/m0_52735414/article/details/128949598
Recomendado
Clasificación