通过sqoop eval传递mysql属性

时间:2016-10-05 18:41:37

标签: sqoop sqoop2

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

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

3 个答案:

答案 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)

我们有两种方法可以获得查询结果:

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

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

  3. 例如: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