下载和装备
Sqoop是Apache的一个开源东西,主要用于在Hadoop和联系数据库之间传输数据。以下是一些关于怎么下载和装备Sqoop的步骤:
-
下载Sqoop:你可以从Apache的官方网站下载Sqoop。大多数企业运用的Sqoop版别是Sqoop1,例如sqoop-1.4.6或sqoop-1.4.7。 Apache Sqoop – Apache Attic 需留意的是要确定下载的版别和你的Hadoop版别兼容。
-
解压缩安装包:将下载的Sqoop tar.gz文件解压到指定目录。
tar xvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt
ln -s /opt/sqoop-1.4.7.bin__hadoop-2.6.0/ /opt/apps/sqoop
- 修改装备文件:进入到conf文件夹,找到sqoop-env-template.sh,修改其名称为sqoop-env.sh。然后修改sqoop-env.sh文件,设置HADOOP_COMMON_HOME,HADOOP_MAPRED_HOME,HIVE_HOME等环境变量。
cp /opt/apps/sqoop/conf/sqoop-env-template.sh /opt/apps/sqoop/conf/sqoop-env.sh
并修改其中的内容,设置HADOOP_COMMON_HOME和HADOOP_MAPRED_HOME为你的Hadoop安装目录,例如:
export HADOOP_COMMON_HOME=/opt/apps/hadoop
export HADOOP_MAPRED_HOME=/opt/apps/hadoop
-
增加MySQL驱动:将MySQL的JDBC驱动包(例如mysql-connector-java-5.1.40-bin.jar)增加到Sqoop的lib目录下。 可以从central.maven.org也可以下载其他数据库的JDBC驱动,假如你需要衔接其他类型的数据库。 需留意的是,你的MySQL驱动要和你的数据库版别兼容。
-
装备环境变量:在系统的环境变量中增加SQOOP_HOME,并将其增加到PATH中。
export SQOOP_HOME=/opt/apps/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
-
验证安装: 打开终端或指令行界面,输入
sqoop version
指令,确认是否成功安装和装备了 Sqoop。
运用
以下是sqoop的指令示例和详解。
导入数据到Hadoop
指令:
sqoop import --connect <jdbc-url> --username <username> --password <password> --table <table-name> --target-dir <target-directory>
参数说明:
-
--connect <jdbc-url>
:数据库衔接URL。 -
--username <username>
:数据库用户名。 -
--password <password>
:数据库暗码。 -
--table <table-name>
:要导入的数据库表名。 -
--target-dir <target-directory>
:Hadoop中存储导入数据的方针目录。
导出数据到联系型数据库
指令:
sqoop export --connect <jdbc-url> --username <username> --password <password> --table <table-name> --export-dir <export-directory>
参数说明:
-
--connect <jdbc-url>
:方针数据库衔接URL。 -
--username <username>
:方针数据库用户名。 -
--password <password>
:方针数据库暗码。 -
--table <table-name>
:要导出到的方针数据库表名。 -
--export-dir <export-directory>
:Hadoop中存储待导出数据的目录。
其他常用参数:
-
--fields-terminated-by <char>
:设置字段分隔符。 -
--lines-terminated-by <char>
:设置行分隔符。 -
--null-string <null-str>
:指定数据库中的 NULL 表明的字符串。 -
--null-non-string <null-str>
:指定数据库中的 NULL 表明的非字符串。
分隔符
在运用 Sqoop 进行数据传输时,默许情况下,它运用逗号(,
)作为字段分隔符,并采用换行符(n
)作为行分隔符。这意味着,假如数据包括文本字段而且这些字段中含有逗号,可能会导致在运用 Hive 树立映射表时呈现过错。然后导致建表后查询呈现null的囧状。
为防止这种情况,可以手动指定字段分隔符,例如运用 --fields-terminated-by '#'
的参数。这个操作前提是你的文本数据中不包括 #
这个字符。接下来,在 Hive 表中也需要指定字段分隔符为 #
,这样就可以成功地按照 #
分割字段。(需要留意的是,该指令只能承受单个字符作为分隔符。)