Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python UDF for piglatin script not finding re module

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.

like image 536
Deleteman Avatar asked May 18 '26 17:05

Deleteman


1 Answers

re is part of the stdlib, therefore either your Python installation is broken or incomplete, or something has damaged the contents of sys.path.

like image 52
Ignacio Vazquez-Abrams Avatar answered May 20 '26 05:05

Ignacio Vazquez-Abrams



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!