最近一段时间 公司要把sqlserver里的100G数据导入到HDFS中,但是数据库在同事的服务器中,为了不影响同事工作,决定定时在晚上自动执行,但是crontab并没有自动执行,并且执行了下发现脚本的逻辑是没有问题的,而且直接执行是没有问题的,后来又去/etc/crontab文件里去看了下,发现crontab中的环境变量不一样解决办法如下:
1:在本地输入 echo $PATH
2:将输出的内容写到定时脚本中
如下:
PATH=/mnt/modules/hive/bin:/mnt/modules/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/bin:/mnt/modules/spark-2.1.0-bin-hadoop2.4/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/mnt/modules/jdk1.7.0_67/bin:/mnt/modules/scala-2.10.4/bin:/mnt/modules/apache-maven-3.0.5/bin:/mnt/modules/findbugs-1.3.9/bin:/mnt/modules/jdk1.7.0_67/bin:/mnt/modules/hadoop-2.5.2/bin:/mnt/modules/hadoop-2.5.2/sbin:/root/bin /fei joe
export $PATH
sqoop import --connect 'jdbc:sqlserver://*****;username=feijoe;password=****;database=*****' --table=***** --target-dir /data -m 1
再次执行,成功运行。
很多调用系统的参数或者是使用系统环境变量下的文件最好要添加上系统环境变量。