运行 python 脚本中的 sqoop

Run sqoop in python script

我正在尝试在 Python 脚本中使用 运行 sqoop 命令。我可以通过 shell 命令执行该操作,但当我尝试执行 python stript 时:

#!/usr/bin/python
sqoopcom="sqoop import --direct --connect abcd --username abc --P --query "queryname" "

exec (sqoopcom)

我收到一个错误,语法无效,如何解决?

你需要跳过 --query param

sqoopcom="sqoop import --direct --connect abcd --username abc --P --query \"queryname\" --target-dir /pwd/dir --m 1 --fetch-size 1000 --verbose --fields-terminated-by , --escaped-by \ --enclosed-by '\"'/dir/part-m-00000" 

您正在使用的内置 exec 语句用于解释 python 程序中的 python 代码。

你想要的是执行一个外部(shell)命令。为此,您可以使用 子进程模块

中的 call
import subprocess
subprocess.call(["echo", "Hello", "World"])

https://docs.python.org/3/library/subprocess.html

您可以使用: 无效的语法错误指出您没有反斜杠 \"queryname\"

#!/usr/bin/env python
import os
sqoopcom="sqoop import --direct --connect abcd --username abc --P --query \"queryname\" "
os.system(sqoopcom)