首页 文章

通过sqoop eval传递mysql属性

提问于
浏览
0

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 回答

  • 0

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


    警告很简单 .

    • 您可以设置 $ACCUMULO_HOME$ZOOKEEPER_HOME (如果有) .

    • 您可以设置与Mysql对应的 --connection-manager

    • 为安全起见, It's recommended to use -P for password rather than writing in command.

    这些都不是错误,你可以忍受这些警告 .

  • 0

    您可以创建.sh文件,将sqoop命令写入其中,然后将其作为shell_file_name.sh> your_output_file.txt运行

  • 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

相关问题