【发布时间】:2013-12-23 13:28:58
【问题描述】:
我正在学习 Pig Latin,我想知道如何使用 PHP 启动 pig 脚本。
这是我启动脚本的行:
pig -f ../testjava/calculs_routage.pig -param input=/user/hive/warehouse/tableRoutage/ -param output=/resultatsRequetes/obj1/resultatObj1 -param date1=2013-11-08T00:00:00.000Z -param date2=2013-11-15T00:00:00.000Z
我有一个可以在我的 shell(我是 root)中启动的脚本,它可以工作,我尝试使用 bash 启动我的 pig 脚本,它也可以工作。
但是当我尝试使用我的 php 应用程序(所以我的用户是 apache)时,它不起作用。我尝试直接或使用 bash 启动 pig 脚本,但失败了。这是我启动脚本的行:
$cmdTest = exec('pig -f ../testjava/calculs_routage.pig -param input=/user/hive/warehouse/tableRoutage/ -param output=/resultatsRequetes/obj1/resultatObj1 -param date1=2013-11-08T00:00:00.000Z -param date2=2013-11-15T00:00:00.000Z 2>&1');
我尝试使用 sudo 更改用户,但也失败了。
bash 脚本:
#!/bin/bash
sudo -s -u root
pig -f ../testjava/calculs_routage.pig -param input=/user/hive/warehouse/tableRoutage/ -param output=/resultatsRequetes/obj1/resultatObj1 -param date1=2013-11-08T00:00:00.000Z -param date2=2013-11-15T00:00:00.000Z
我不知道问题出在哪里,是用户还是日志文件的错误?我试图在 log4j 属性中更改日志文件的路径,但它并没有改变任何东西。
我的错误信息:
sudo: sorry, you must have a tty to run sudo
13/12/23 14:16:35 WARN pig.Main: Cannot write to log file: /var/www/html/phpmail/vue/pig_1387804595477.log
2013-12-23 14:16:35,481 [main] INFO org.apache.pig.Main - Apache Pig version 0.11.1-Intel (r16951) compiled Jun 19 2013, 17:26:05
2013-12-23 14:16:35,734 [main] INFO org.apache.pig.impl.util.Utils - Default bootup file /var/www/.pigbootup not found
2013-12-23 14:16:35,752 [main] WARN org.apache.pig.Main - Cannot write to log file: /var/www/html/phpmail/vue//calculs_routage.pig1387804595751.log
2013-12-23 14:16:35,767 [main] ERROR org.apache.pig.Main - ERROR 2999: Unexpected internal error. null
2013-12-23 14:16:35,767 [main] WARN org.apache.pig.Main - There is no log file to write to.
2013-12-23 14:16:35,767 [main] ERROR org.apache.pig.Main - java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:394)
at java.util.Properties.setProperty(Properties.java:143)
at org.apache.pig.Main.run(Main.java:454) at org.apache.pig.Main.main(Main.java:157)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:187)
我不知道该怎么做,我需要这个非常高效的脚本。
感谢您阅读本文,也许您的帮助! 节日快乐!!
安吉丽克
【问题讨论】:
-
您是否阅读过错误消息?
sudo: sorry, you must have a tty to run sudo -
是的,但我是 script/shell/bash 的初学者,我尽力做到最好,但我不明白这个错误可能意味着什么。
-
与其说是初学者,不如说是尝试解决问题。祝你好运。
标签: php bash shell apache-pig