gpt4 book ai didi

sql-server - 如何使用 Sqoop 将数据从关系数据库导入沙箱 Hive?

转载 作者:可可西里 更新时间:2023-11-01 14:25:25 24 4
gpt4 key购买 nike

如何使用 Sqoop 将数据从关系数据库导入沙盒中的 Hive。我在我的电脑上安装了 Horton Works 沙箱。 Nw 我想知道这个迁移。我已经引用了这个链接 http://hortonworks.com/kb/using-apache-sqoop-for-data-import-from-relational-dbs/但我有些疑惑1、运行需要Sqoop软件吗?2,在上面提到的链接中有一些代码,我将把这段代码放在哪里?在 Hive 查询窗口中?3、是否可以完全迁移数据库(或仅按时间表迁移)?4、存储过程和 Viwes 我将把所有这些都保存在哪里?

最佳答案

Sqoop 预装了最新的 Horton Sandbox。您必须执行以下操作。如果某些情况,您可能需要权限 ( Host 'xxx.xx.xxx.xxx' is not allowed to connect to this MySQL server )。否则执行以下操作 -将数据从 RDBMS(MYSQL、ORACLE 等)导入和导出到 HDFS/HIVE/HBASE

先决条件

  • Apache Hadoop
  • Apache Sqoop(兼容Hadoop版本)
  • Apache 配置单元(可选)
  • Apache HBase(可选)
  • Apache HCatalog(可选)
  • JDBC/ODBC 连接器

对于所有 RDBMS,连接 URL 发生变化,其余所有命令行参数保持不变。您需要下载特定的 JDBC/ODBC 连接器 JAR 并将其复制到 $SQOOP_HOME/lib


MySQL

下载 mysql-connector-java.jar 并放在 $SQOOP_HOME/lib 文件夹中

cp mysql-connector-java-5.1.18-bin.jar/usr/local/hadoop/sqoop-1.4.3-cdh4.4.0/lib/

期望您在 MySQL 表中有数据。

从 SQOOP 检索 MySQL 中可用的数据库列表

sqoop list-databases --connect jdbc:mysql://localhost:3306/  --username root -P

MySQL 到 HDFS 导入

有主键:

sqoop import -connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName --target-dir /path/to/directoryName

无主键:

sqoop import -connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName --target-dir /path/to/directoryName  -m 1

MySQL 到 Hive 导入

有主键:

sqoop-import  --connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName  --hive-table tableName --create-hive-table --hive-import --hive-home path/to/hive_home

无主键:

sqoop-import  --connect jdbc:mysql://localhost:3306/db1 -username root -password password --table tableName  --hive-table tableName --create-hive-table --hive-import --hive-home  path/to/hive_home -m 1

MySQL 到 HBase 导入

导入所有列:

sqoop import --connect jdbc:mysql://localhost:3306/db1 --username root --password root --table tableName --hbase-table hbase_tableName  --column-family hbase_table_col1 --hbase-create-table

HBase 导入几列

sqoop import --connect jdbc:mysql://localhost:3306/db1 --username root --password root --table tableName --hbase-table hbase_tableName --columns column1,column2 --column-family hbase_table_col1 --hbase-create-table

HBase 主键:

sqoop import --connect jdbc:mysql://localhost:3306/db1 --username root --password root --table tableName --hbase-table hbase_tableName --column-family hbase_table_col1 --hbase-row-key column1 –hbase-create-table

没有主键的Hbase:

sqoop import --connect jdbc:mysql://localhost:3306/db1 --username root --password root --table tableName --hbase-table hbase_tableName --columns column1,column2 --column-family hbase_table_col --hbase-row-key column1 --hbase-create-table

从 HDFS 导出到 MySQL:

对于所有 Hive/HBase/HDFS 都一样:因为 Hive 表只是 HDFS 中的目录。所以你只是将目录导出到 MySQL

sqoop export --connect jdbc:mysql://localhost:3306/test_db --table tableName  --export-dir /user/hive/warehouse/tableName --username root --password password -m 1 --input-fields-terminated-by '\001'

SQL Server

连接网址:

sqoop import --connect 'jdbc:sqlserver://;username=dbuser;password=dbpasswd;database=' --table --target-dir/path/to/hdfs/dir --split-by -m 1

从 Microsoft 网站下载连接器

http://www.microsoft.com/en-us/download/confirmation.aspx?id=11774

放在$SQOOP_HOME/lib


甲骨文

连接网址:

sqoop import --connect "jdbc:oracle:thin:@(description=(address=(protocol=tcp)(host=myhost)(port=1521))(connect_data=(service_name=myservice)))" \
--username USER --table SCHEMA.TABLE_NAME --hive-import --hive-table SCHEMA.TABLE_NAME \
--num-mappers 1 --verbose -P \

IBM DB2

下载 DB2Driver 并将其放在 $SQOOP_HOME/lib

    sqoop import --driver com.ibm.db2.jcc.DB2Driver --connect jdbc:db2://db2.my.com:50000/testdb --username db2user --db2pwd --table db2tbl --split-by tbl_primarykey --target-dir sqoopimports

sqoop export --driver com.ibm.db2.jcc.DB2Driver --connect jdbc:db2://db2.my.com:50000/myDB --username db2user --password db2pwd --table db2tbl --export-dir /sqoop/dataFile.csv

不同的 RDBMS 有不同的连接字符串

  • 数据库版本——直接支持?连接字符串匹配

  • HSQLDB 1.8.0+ 无 jdbc:hsqldb:*//

  • MySQL 5.0+ 是 jdbc:mysql://

  • Oracle 10.2.0+ 无 jdbc:oracle:*//

  • PostgreSQL 8.3+ 是(仅导入)jdbc:postgresql://


关于sql-server - 如何使用 Sqoop 将数据从关系数据库导入沙箱 Hive?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17064144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com