Apache Sqoop Cookbook 英文版-翻译学习!!
Sqoop 命令
19/05/31 05:49:02 INFO sqoop.Sqoop: Running Sqoop version: 1.4.5.2.2.4.2-2
usage: sqoop COMMAND [ARGS]
Available commands:
codegen Generate code to interact with database records
create-hive-table Import a table definition into Hive
eval Evaluate a SQL statement and display the results
export Export an HDFS directory to a database table
help List available commands
import Import a table from a database to HDFS
import-all-tables Import tables from a database to HDFS
job Work with saved jobs
list-databases List available databases on a server
list-tables List available tables in a database
merge Merge results of incremental imports
metastore Run a standalone Sqoop metastore
version Display version information
See 'sqoop help COMMAND' for information on a specific command.
问题
在命令行中输入数据库的密码是不安全的,由于很容被系统中的监听进程获取到。
解决方案
有两种方法来指定密码,处理在命令行中使用 --password 参数外,第一选择是使用 -P 参数,通过这个
参数告诉Sqoop从标准输入中读取密码,但是也可以通过 --password-file命令来告诉sqoop从一个文件中读取密码
以下展示,sqoop从标准输入中读取密码的方法, 注意是大写的P
sqoop import \
--connect jdbc:mysql://localhost:3306/sqoop \
--username sqoop \
--table cities \
-P
以下展示,通过从文件中读取密码的方式,密码文件需要保持在HDFS文件系统上。
sqoop import \
--connect jdbc:mysql://127.0.0.1:3306/sqoop \
--username sqoop \
--table cities \
--password-file sqoop.password
讨论
进一步的深入的讨论每种可用的方法。对于对一种方法使用 -p 参数的方法。在执行任何Sqoop之前将会出现提示
用户输入密码。
可用在密码提示后输入任意的字符,在确认好后,按下回车键。sqoop不会显示任何字符,以防止他人从屏幕上获取密码信息。所有输入的字符将会被载入并作为密码使用。这种方法十分安全,由于密码并没有存储在存储在其他地方,并
其实直接通过用户输入的。但不好的一面是不易通过脚本进行自动化的执行。
第二种方法,使用参数 --password-file 参数,将会从指定HDFS路径上的文件读取密码,为了使这种方法
安全,需要将这个密码文件存储在你的家目录中,并且对将文件的权限设置为400,这样就没有其他人能够打开文件
获取密码,这种方法可以确保密码安全的同时,并可以通过脚本进行自动化的执行,对于需要安全的自动化执行
sqoop工作流的情况中,这种方法是推荐的。可以使用以下的方法创建密码文件:
echo "my-secret-password" > sqoop.password
hadoop dfs -put sqoop.password /user/$USER/sqoop.password
hadoop dfs -chown 400 /user/$USER/sqoop.password
rm sqoop.password
sqoop import --password-file /user/$USER/sqoop.password ...