我想把一些常量放在一个Python文件中,然后导入到另一个文件中。我创建了两个文件,一个带有常量,一个导入常量,在本地一切都运行良好:
constants.py:
CONST = "hi guy"
from constants import CONST
import sys
for line in sys.stdin:
print(CONST)
$ echo "dummy" | python test_constants.py
hi guy
hive> add file hdfs://path/.../test_constants.py;
No rows affected (0.191 seconds)
hive> add file hdfs://path/.../constants.py;
No rows affected (0.049 seconds)
hive> list files;
resource
/tmp/bb09f878-7e36-4aa2-8566-a30950072bcb_resources/test_constants.py
/tmp/bb09f878-7e36-4aa2-8566-a30950072bcb_resources/constants.py
2 rows selected (0.179 seconds)
hive> with t as (select 1 as dummy)
select transform (dummy)
using 'python test_constants.py'
as dummy_out
from t;
Error: org.apache.hive.service.cli.HiveSQLException:
Error while processing statement: FAILED:
Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask.
Vertex failed, vertexName=Map 1, vertexId=vertex_1535407036047_170618_1_00, diagnostics=[Task failed, taskId=task_1535407036047_170618_1_00_000000, diagnostics=[TaskAttempt 0 failed, info=[Error: Error while running task ( failure ) : attempt_1535407036047_170618_1_00_000000_0:
java.lang.RuntimeException: java.lang.RuntimeException: Hive Runtime Error while closing operators
Log Type: stderr
Log Upload Time: Mon Oct 29 15:50:42 -0700 2018
Log Length: 251
2018-10-29 15:45:16 Starting to run new task attempt: attempt_1535407036047_170618_1_00_000000_3
Traceback (most recent call last):
File "test_constants.py", line 1, in <module>
from constants import CONST
ImportError: No module named constants
2018-10-30新增:
@serge_k的回答是有效的,但是,我最初遇到了麻烦,因为我拥有Python UDF的路径最初不能用于hive。将所有文件移动到HDFS上的/tmp
后,一切都按预期进行。
hive> add file hdfs://dev/tmp/transforms;
No rows affected (0.108 seconds)
hive> list files;
resource
/tmp/61ecb363-ead6-4679-8f58-3611db9487b2_resources/transforms
1 row selected (0.202 seconds)
hive> select transform (col) using 'python transforms/test_constants.py' as dummy_out from dummy.test;
dummy_out
hi guy
hi guy
hi guy
hi guy
hi guy
hi guy
hi guy
hi guy
hi guy
hi guy
10 rows selected (63.734 seconds)
将python脚本放在一个文件夹中,例如files
,将整个文件夹添加到分布式缓存中,并调用脚本为python files/script_name.py
:
hive> add file ./files;
Added resources: [./files]
hive> with t as (select 1 as dummy) select transform (dummy)
using 'python files/test_constants.py' as dummy_out from t;
OK
hi guy
我正在试着运行这个程序 但是我对numpy有一个问题,我在使用pyschopy和opencv。我一直遇到的问题是此错误报告: 运行时错误:针对API版本7编译的模块,但此版本的Numpy是6 回溯(最近一次呼叫最后一次): 文件“C:\Users\John\Documents\EyeTracking\Programs\GetImage.py”,第1行,在 恐怖:努比。果心多重数组导入失败 我有nu
我在osx 10.6.8上,试图使用bash来安装虚拟环境包装器,并且得到了神秘的反馈(至少对我来说是这样)。我能够安装虚拟环境。 也许有人能给我指出正确的方向。。。 失败安装的输出: 正在运行安装程序。py egg_包裹虚拟说唱歌手信息 已安装/private/tmp/pip_build_root/virtualenvwrapper/pbr-0.5.23-py2。6.鸡蛋 /系统/库/框架/Py
问题内容: 调用反射值的.FieldByName方法时出现以下错误,确切的错误是:- 和代码是:- 我了解的并不多,但这就是我所能获得的所有信息。 这是Go Playground上代码的链接:http : //play.golang.org/p/E038cPOoGp 问题答案: 您已经是一个指向结构的指针。尝试打印出您的代码。 没有理由使用的地址,然后调用that ,它会取消对刚创建的指针的引用。
我目前正在考虑如何编写测试来检查给定的代码是否出现了恐慌?我知道Go使用来捕捉恐慌,但与Java代码不同的是,您不能真正指定在发生恐慌时应该跳过哪些代码或您有哪些代码。所以如果我有一个函数: 我真的不知道是否发生了恐慌,我们恢复了,或者函数是否根本没有恐慌。如何指定在没有恐慌的情况下跳过哪些代码,以及在出现恐慌的情况下执行哪些代码?我如何检查我们是否从恐慌中恢复过来?
在Golang中,没有恢复的panic将使进程崩溃,因此我最后将以下代码片段放在每个函数的开头: 只是为了防止我的程序崩溃。现在我在想,真的是要走的路吗?因为我觉得到处放同样的代码看起来有点奇怪。 在我看来,这是Java的方式,将异常冒泡到调用函数,直到main函数成为控制异常/恐慌的更好方式。我明白这是Go的设计,但像Go一样立即崩溃进程的好处是什么?
有什么方法可以重写panic功能来使用我们的记录器吗?