首页 > 其他分享 >Mac安装Sqoop

Mac安装Sqoop

时间:2023-05-15 19:31:58浏览次数:39  
标签:Sqoop -- sqoop hive Mac emp mysql HOME 安装


一:简介

Sqoop是一款用于Hadoop(Hive)与关系型数据库(mysql等)间进行数据的传递的ETL工具。

二:安装sqoop

1. 安装sqoop
brew install sqoop
2. 配置环境变量

Hadoop, Hive, HBase and ZooKeeper must be installed and configured for Sqoop to work.

vi ~/.bash_profile

export ZOOKEEPER_HOME="/usr/local/Cellar/zookeeper/3.4.14"

export HADOOP_HOME=/usr/local/Cellar/hadoop/3.2.1/libexec
export HADOOP_ROOT_LOGGER=DEBUG,console
export PATH=$PATH:${HADOOP_HOME}/bin

export HBASE_HOME=/usr/local/Cellar/hbase/1.3.5/libexec
export PATH=$PATH:${HBASE_HOME}/bin

export HIVE_HOME=/usr/local/Cellar/hive/3.1.2
export PATH=$HIVE_HOME/bin:$PATH

export SQOOP_HOME=/usr/local/Cellar/sqoop/1.4.6_1/libexec
# /tmp/sqoop-<自己机器登录的用户名>/compile
export SQOOP_CLASSPATH=/tmp/sqoop-mengday/compile
export PATH=$PATH:$SQOOP_HOME/bin
export ACCUMULO_HOME=/var/lib/accumulo

source ~/.bash_profile

3.配置sqoop-env.sh
cd /usr/local/Cellar/sqoop/1.4.6_1/libexec/conf
cp sqoop-env-template.sh sqoop-env.sh
vim sqoop-env.sh
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=${HADOOP_HOME}

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=${HADOOP_HOME}

#set the path to where bin/hbase is available
export HBASE_HOME=${HBASE_HOME}

#Set the path to where bin/hive is available
export HIVE_HOME=${HIVE_HOME}

#Set the path for where zookeper config dir is
export ZOOCFGDIR=${ZOOKEEPER_HOME}/conf
4.查看安装版本 sqoop version

通过命令 sqoop version查看版本可能会报以下警告Warning:

  • Warning: /usr/local/Cellar/sqoop/1.4.6_1/libexec/bin/…/…/accumulo does not exist! Accumulo imports will fail.
    Please set $ACCUMULO_HOME to the root of your Accumulo installation.
    解决办法:配置环境变量 ACCUMULO_HOME
export ACCUMULO_HOME=/var/lib/accumulo

# 需要手动创建目录
sudo mkdir /var/lib/accumulo
  • Warning: /usr/local/Cellar/sqoop/1.4.6_1/libexec/…/hcatalog does not exist! HCatalog jobs will fail.
    Please set $HCAT_HOME to the root of your HCatalog installation.
    解决办法:注释/usr/local/Cellar/sqoop/1.4.6_1/libexec/bin/configure-sqoop中关于HCAT_HOME的代码检查,或略掉检查即可。

Mac安装Sqoop_sqoop

Mac安装Sqoop_hive_02

5. 下载mysql驱动jar到lib目录
curl -L 'http://www.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.42.tar.gz/from/http://mysql.he.net/' | tar xz
cp mysql-connector-java-5.1.42/mysql-connector-java-5.1.42-bin.jar /usr/local/Cellar/sqoop/1.4.6_1/libexec/lib/
6. 创建mysql数据库
create database sqoop;


CREATE TABLE `emp` (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `deg` varchar(255) NOT NULL,
  `salary` int(11) NOT NULL,
  `dept` varchar(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `emp` VALUES (1, 'zhangsan', 'manager', 30000, 'AA');
INSERT INTO `emp` VALUES (2, 'lisi', 'programmer', 20000, 'AA');
INSERT INTO `emp` VALUES (3, 'wangwu', 'programmer', 15000, 'BB');
INSERT INTO `emp` VALUES (4, 'hund', 'programmer', 5000, 'CC');

三:将mysql导入到hadoop(hdfs)

1. 启动hadoop

如果DataNode没有启动起来就删除tmp目录,然后重新格式化

./sbin/start-all.sh

# 查看DataNode有没有启动起来
jps
2. 列举数据库中表
sqoop list-tables --connect jdbc:mysql://localhost:3306/sqoop --username root --password root123
3. 将mysql中的数据导入到hadoop(hdfs)中
sqoop import --connect jdbc:mysql://localhost:3306/sqoop --username root --password root123 --table emp

可能会遇到的问题:

  • Class emp not found
    上面命令将会在/tmp/sqoop-<用户名>/compile//目录下生成emp.class和emp.jav文件两个文件,
    emp.java文件可能会生成在该目录下也有可能生成在用户目录下(如/Users/mengday/), 如果这三个文件没有在同一个目录将会出现Class emp not found问题。解决办法就是让这三个文件生成在同一个目录下。
# 解决方案一:通过 --bindir指定位置(此种方案没有解决掉我的问题)
# 此方案三个文件emp.jar、emp.class、emp.java都生成指定的目录,但是仍然报class emp not found
sqoop import --bindir /tmp/sqoop-mengday/compile --connect jdbc:mysql://localhost:3306/sqoop --username root --password root123 --table emp

# 解决方案二:配置 -Dmapreduce.job.user.classpath.first=true (此种方案没有解决掉我的问题)
sqoop import -Dmapreduce.job.user.classpath.first=true  --connect jdbc:mysql://localhost:3306/sqoop --username root --password root123 --table emp
# 解决方案三(此方案有效):此方案需要执行两个命令:先代码生成jar, 然后通过jar来执行导入
# 生成jar,该命令会打印jar包位置 Writing jar file: /tmp/sqoop-mengday/compile/7b52bf6e21f2a6326d5515f78faad976/emp.jar
sqoop codegen --connect "jdbc:mysql://localhost:3306/sqoop" --username root --password root123 --table emp

# 通过指定.jar来导入
# 此命令会在/usr/local/Cellar/sqoop/1.4.6_1/libexec/conf/目录下生成emp, 目录下是生成的hdfs文件
# 此命令并没有将生成的_SUCCESS 和 part-m-00000 文件上传到hdfs中
sqoop import -fs local -jt local -libjars /tmp/sqoop-mengday/compile/7b52bf6e21f2a6326d5515f78faad976/emp.jar --connect "jdbc:mysql://localhost:3306/sqoop" --username root --password root123 --table emp


# 手动上传_SUCCESS 和 part-m-00000
hadoop fs -mkdir -p /tmp/
hadoop fs -copyFromLocal /usr/local/Cellar/sqoop/1.4.6_1/libexec/conf/emp/ /tmp

Mac安装Sqoop_hive_03

通过在 http://localhost:9870/ Utilities -> Browse the file system

Mac安装Sqoop_hive_04

# 通过hadoop命令查看每个part的内容
hadoop fs -cat /tmp/emp/part-m-00000

Mac安装Sqoop_mysql_05

四:hdfs导入到hive

hdfs导入到hive 这里并没有使用到sqoop。

1. 启动metastore服务
hive --service metastore
2.1 手动创建
~ hive

hive> drop table if exists emp;

hive> create table emp(id int, name string, deg string, salary int, dept string)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
2.2 自动生成与关系数据库表结构对应的hive表结构
# 此命令会一直报错 Could not initialize class org.apache.derby.jdbc.EmbeddedDriver
sqoop create-hive-table --connect jdbc:mysql://localhost:3306/sqoop --username root --password root123 --table emp --hive-table emp
  • –table: 关系数据库名称
  • –hive-table:hive对应的表名
  • –hive-overwrite:覆盖掉在Hive表中已经存在的数据
3. 从hdfs中加载数据到hive中

hdfs://localhost:8020是在core-site.xml中fs.defaultFS配置的。

hive> load data inpath 'hdfs://localhost:8020/tmp/emp/part-m-00000' into table emp;
hive> select * from emp;
OK
1	zhangsan	manager	30000	AA
2	lisi	programmer	20000	AA
3	wangwu	programmer	15000	BB
4	hund	programmer	5000	CC

Mac安装Sqoop_mysql_06


标签:Sqoop,--,sqoop,hive,Mac,emp,mysql,HOME,安装
From: https://blog.51cto.com/u_16114318/6280718

相关文章

  • mormot2控件安装
    1.下载加入QQ群OneDelphi中间件开源群(群号:814696487)2.解压mormot23、把相关路径加到DelphiIDE......
  • mormot2控件安装
    1.下载加入QQ群OneDelphi中间件开源群(群号:814696487)2.解压mormot2;3.把相关路径加到DelphiIDE。......
  • linux中安装jdk
    安装步骤:1.首先我们需要一台虚拟机或者一台配置了环境的服务器这里我们使用阿贝云服务器。2.搜索需要的jdkyumsearchjdk 3.安装需要的版本yuminstall java-1.8.0-openjdk-devel.x86_644.安装完成查看版本......
  • windows环境安装make命令
    一、Make简介Make是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make可以自动化地执行编译、链接等一系列操作,提高开发效率。Make使用Makefile文件描述项目的构建过程,其中包含了源文件、目标文件以及编译和链接的命令等......
  • Linux下部署安装JDK
    系统:Centos7安装jdk版本:1.8.0_371安装方式:压缩包jdk官网下载 https://www.oracle.com/java/technologies/downloads/#java8 先用Java-version命令检测系统是否默认安装了jdk,如有可以使用rpm命令卸载!1、利用工具将下载的包放到/usr/local下并解压#切换到jdk目录下cd/u......
  • Prometheus系列---【zookeeper-exporter的安装】
    zookeeper-exporter的安装1.下载地址链接:2.上传到服务器指定目录cd/home/appusermkdirmonitor3.执行修改权限chmod+x/home/appuser/monitor/zookeeper_exporter4.启动zookeeper_exporternohup/home/appuser/monitor/zookeeper_exporter-bind-addr=:1887>/dev/n......
  • Windows 安装 RabbitMQ
    引用:http://www.ppmy.cn/news/6570.html 下载地址寻找:https://www.rabbitmq.com/download.html  ......
  • Docker安装
    前提说明Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的Linux主机。因此,Docker必须部署在Linux内核的系统上。如果其它系统想部署Docker就必须安装一个虚......
  • 安装和卸载pandas
     安装Pandaspipinstallpandas;#查看版本号pandas.__version__  卸载pandaspipuninstallpandas;     原文链接:https://aistudio.baidu.com/aistudio/projectdetail/4411791 在终端命令行中有三种安装方法,输入命令:(1)pipinstallpandas。自......
  • macOS terminal vim bug All In One
    macOSterminalvimbugAllInOnevim中文乱码bugvim❌cat✅demosnotworkatall❌$cat~/.vimrccat:/Users/xgqfrms-mbp/.vimrc:Nosuchfileordirectory$vim~/.vimrc$cat~/.vimrcsetenc=utf8$vim~/.vimrc$cat~/.vimrcsetfileencod......