我想以另一个用户身份运行sqoop命令。我可以在运行sqoop作业之前设置HADOOP_USER_NAME命令,如下所示:
export HADOOP_USER_NAME=desiredUser
sqoop import \
-D mapreduce.map.memory.mb=4096 \
-D mapreduce.map.java.opts=-Xmx3200m \
--driver ...\
--connect ..\
--username ..
我想知道如果有一种方法在sqoop命令中设置它类似于我如何设置mapreduce.map.memory.mb选项。我试过了
...
-D HADOOP_USER_NAME=desiredUser
...
但它没有改变用户。谢谢你的回复
对于用户来说,没有使用-D
这样的选项。 -D
被用来提供mapreduce财产。但您可以尝试使用sudo
命令。使用sudo
Sqoop命令将是sudo HADOOP_USER_NAME=desiredUser sqoop import <generic args>
您可以在Unix中通过Su向其他用户执行此操作并运行sqoop命令。请参阅以下示例:
su somebody << 'EOF'command1 -p 'parameter with “quotes" inline' EOF
您可以在EOF之间使用command2 -p 'parameter with "quotes" inline'
运行多个命令。
要特定于您的sqoop作业,如果您有权访问某些用户,请使用命令Su - yourUser “sqoop command”
如果你是sudoing使用这个
sudo -H -u otheruser bash -c 'echo "I am $USER, with uid $UID"'
man sudo will be your guru to explore more options