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信息 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经理)。 Sqoop将回归到org.apache.sqoop.manager.GenericJdbcManager。请明确说明 下次应该使用哪个连接管理器。 16/10/05 18:38:17 INFO manager.SqlManager:使用默认的fetchSize为1000 -------------- | max(rdate)| -------------- | 2014-01-25 |
但我希望输出没有警告和表边界如:
max(rdate)2014-01-25
我基本上想将此输出存储到文件中。 提前谢谢
答案 0 :(得分:0)
您可以执行Sqoop Import
操作以将输出保存在HDFS中。
警告很简单。
如果可以,您可以设置$ACCUMULO_HOME
,$ZOOKEEPER_HOME
。
您可以设置与Mysql
--connection-manager
为了安全起见,
建议您使用-P
作为密码,而不是使用命令进行编写。
这些不是错误,您可以忍受这些警告。
答案 1 :(得分:0)
您可以创建一个.sh文件,将sqoop命令写入其中,然后运行它 shell_file_name.sh&gt; your_output_file.txt
答案 2 :(得分:0)
我们有两种方法可以获得查询结果:
另一种方法是通过导入查询结果( - 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