当我们手动执行脚本没有问题时,我们认为万事OK了 。其实不然放入crontab之后缺少各种东西。
我的业务是 使用hive中原始表当数据源,创建一个临时表,将数据原的数据清洗一遍放入临时表,再使用sqoop将临时表的数据导入到Mysql中。
首先我的hive表是orc文件压缩格式,sqoop无法直接读取,所以在清洗时顺便换了文件格式。一部分表是与hbase关联表,所以需要将hbase/lib中的 hbase相关的jar 和htrace相关的ja包复制到hive/lib中,将hbase-site.xml 中的 zookeeper 配置复制到hive-site.xml中,这样保证操作与hbase关联表时不会出错。
其次就时在crontab 执行时需要配置一些环境变量,可以临时添加,
export HADOOP_MAPRED_HOME=$HADOOP_HOME。
这样 sqoop就可以正常工作,可能会包一些其他的环境变量找到不到,可以忽略,已经不影响sqoop的执行了,看着不爽,就在sqoop/bin/configure-sqoop中把 相关的注释掉。