I'm having trouble creating a UDF for a piglatin script I'm using. My problem is that when I run the script with pig script.pig I get the following error:
[main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1121: Python Error. Traceback (most recent call last):
File "utils.py", line 3, in <module>
import re
ImportError: No module named re
And on my "utils.py" script, I'm importing the module like so: import re
Why is it not finding the re module and how can I fix it?
Edit
I should note that if I run the python script directly using the python command, I don't get an error saying that it couldn't find the re module.
Edit 2
Ok, based on the comments, I installed jython (which wasn't installed on my system) and here are the outputs of print sys.path for my script:
Using python
['/home/hduser/bqmScripts/betsScripts', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages/PIL', '/usr/lib/python2.6/dist-packages/gst-0.10', '/usr/lib/pymodules/python2.6', '/usr/lib/python2.6/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.6/gtk-2.0', '/usr/local/lib/python2.6/dist-packages']
Using Jython
['', '/usr/share/jython/Lib', '/usr/lib/site-python', '__classpath__']
Using pig
['/pig/lib/Lib', '__classpath__', '__pyclasspath__/']
After seeing this, I tried to add the missing path elements from jython into the pig version, and what I get now is this:
File "utils.py", line 8, in <module>
import re
File "/usr/share/jython/Lib/re.py", line 7, in <module>
import sre, sys
File "/usr/share/jython/Lib/sre.py", line 97, in <module>
import sre_compile
File "/usr/share/jython/Lib/sre_compile.py", line 17, in <module>
assert _sre.MAGIC == MAGIC, "SRE module mismatch"
AssertionError: SRE module mismatch
SOLVED
To solve my latest error message I looked for the version of jython that my pig installation was using (2.5) and installed that one manually. That fixed the issue.
re is part of the stdlib, therefore either your Python installation is broken or incomplete, or something has damaged the contents of sys.path.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With