【问题标题】:passing mysql properties via sqoop eval通过 sqoop eval 传递 mysql 属性
【发布时间】:2016-10-05 18:41:37
【问题描述】:

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_HOME 设置为您的根目录 累积安装。警告:/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 设置为显式 驱动程序但是没有设置适当的连接管理器(通过 --连接管理器)。 Sqoop 将退回到 org.apache.sqoop.manager.GenericJdbcManager。请明确指定 下次应该使用哪个连接管理器。 16/10/05 18:38:17 INFO manager.SqlManager:使用默认的 fetchSize 1000 -------------- |最大(日期) | -------------- | 2014-01-25 |

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

max(rdate) 2014-01-25

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

【问题讨论】:

    标签: sqoop sqoop2


    【解决方案1】:

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


    警告是直截了当的。

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-01-23
          • 1970-01-01
          • 1970-01-01
          • 2018-07-09
          • 2012-08-12
          • 2021-12-12
          • 1970-01-01
          相关资源
          最近更新 更多