0

sqoop 评估命令:

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: 使用默认 fetchSize 1000 -------------- | 最大(日期)| -------------- | 2014-01-25 |

但我希望输出没有警告和表格边界,例如:

最大值(rdate) 2014-01-25

我基本上想将此输出存储到文件中。提前致谢

4

3 回答 3

0

您可以执行Sqoop Import操作以将输出保存在 HDFS 中。


警告是直截了当的。

  • $ACCUMULO_HOME如果可用,您可以设置$ZOOKEEPER_HOME

  • 可以设置--connection-manager对应Mysql

  • 为了安全起见, 建议使用-P密码而不是写命令。

这些不是错误,您可以忍受这些警告。

于 2016-10-07T13:36:33.037 回答
0

您可以创建一个 .sh 文件,将您的 sqoop 命令写入其中,然后以 shell_file_name.sh > your_output_file.txt的形式运行它

于 2016-10-12T08:33:52.273 回答
0

我们有两种方式获取查询结果:

  1. 另一种方法是您可以通过导入查询结果(--target-dir /path)写入 HDFS 并从那里读取。

  2. 您可以更改 sqoop 命令中的文件系统选项以存储导入查询的结果,因此背后的想法是将数据导入本地文件系统而不是 HDFS。

eg: sqoop import -fs local -jt local --connect "连接字符串" --username root --password root query "Select * from table" --target-dir /home/output

https://sqoop.apache.org/docs/1.4.0-incubating/SqoopUserGuide.html#id1762587

于 2016-10-17T10:03:27.807 回答