“Hive在Python脚本中调用时尝试读取当前工作目录”

2024-10-02 00:22:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从Python包装器执行配置单元脚本。部分代码看起来像

print(HiveArgs)
Hive = subprocess.Popen(HiveArgs, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
HiveOutput = Hive.communicate()

print("Out:" + HiveOutput[0])
print("=================================")
print("Err:" + HiveOutput[1])

其输出为:

^{pr2}$

其中/data/edw/edwdev/(配置单元认为丢失的文件)是我在Linux服务器上的工作目录。在

将工作目录更改为脚本的位置没有帮助。使用相对路径和绝对路径也没有区别。如果我从打印的HiveArgs复制值,并从终端(hive -i /edw/edwdev/tmp/spark.txn.init.tmp -f /edw/edwdev/tmp/test.hql.tmp)执行命令,它可以正常工作。在

我错过了什么?在


Tags: 代码目录脚本stderredwtmp单元subprocess
1条回答
网友
1楼 · 发布于 2024-10-02 00:22:00

结果问题出在配置单元参数上。print(HiveArgs)行给出了输出:

['hive', '-i ', '/edw/edwdev/tmp/spark.txn.init.tmp', '-f ', '/edw/edwdev/tmp/test.hql.tmp']

传递的参数是'-f ''-i '(带尾随空格),而不是'-f'和{}。在

我不确定是什么导致配置单元内的问题导致它将当前工作目录作为某些输入文件读取。最有可能的是,Hive没有修剪导致这种行为的参数。删除空格解决了这个问题。在

相关问题 更多 >

    热门问题