sqoop eval命令:
sqoop eval --connect 'jdbc:mysql://<connection url>' --driver com.mysql.jdbc.Driver --query "select max(rdate) from test.sqoop_test"
给我输出:
警告:/usr/hdp/2.3.2.0-2950/accumulo不存在! Accumulo进口将失败 . 请将$ ACCUMULO_HOME设置为Accumulo安装的根目录 . 警告:/usr/hdp/2.3.2.0-2950/zookeeper不存在! Accumulo进口将失败 . 请将$ ZOOKEEPER_HOME设置为Zookeeper安装的根目录 . 16/10/05 18:38:17 INFO sqoop.Sqoop:运行Sqoop版本:1.4.6.2.3.2.0-2950 16/10/05 18:38:17 WARN tool.BaseSqoopTool:在命令上设置密码 - 线是不安全的 . 考虑使用-P代替 . 16/10/05 18:38:17 WARN sqoop.ConnFactory:参数--driver设置为显式驱动程序,但未设置适当的连接管理器(通过--connection-manager) . Sqoop将回归到org.apache.sqoop.manager.GenericJdbcManager . 请明确指定下次应使用哪个连接管理器 . 16/10/05 18:38:17 INFO manager.SqlManager:使用1000的默认fetchSize -------------- | max(rdate)| -------------- | 2014-01-25 |
但我希望输出没有警告和表边界像:
max(rdate)2014-01-25
我基本上想将此输出存储到文件中 . 提前致谢
3 回答
您可以执行Sqoop Import操作以在HDFS中保存输出 .
警告很简单 .
您可以设置
$ACCUMULO_HOME
,$ZOOKEEPER_HOME
(如果有) .您可以设置与Mysql对应的
--connection-manager
为安全起见, It's recommended to use -P for password rather than writing in command.
这些都不是错误,你可以忍受这些警告 .
您可以创建.sh文件,将sqoop命令写入其中,然后将其作为shell_file_name.sh> your_output_file.txt运行
我们有两种方法来获取查询结果:
另一种方法是通过导入查询结果( - target-dir / path)并从那里读取来写入HDFS .
您可以更改sqoop命令中的文件系统选项以存储导入查询的结果,因此背后的想法是将数据导入本地文件系统而不是HDFS .
例如:sqoop import -fs local -jt local --connect“connection string”--username root --password root query“select * from table”--target-dir / home / output
https://sqoop.apache.org/docs/1.4.0-incubating/SqoopUserGuide.html#id1762587