You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@spark.apache.org by "Wenchen Fan (JIRA)" <ji...@apache.org> on 2019/05/21 13:20:00 UTC

[jira] [Resolved] (SPARK-27786) SHA1, MD5, and Base64 expression codegen doesn't work when commons-codec is shaded

     [ https://issues.apache.org/jira/browse/SPARK-27786?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Wenchen Fan resolved SPARK-27786.
---------------------------------
       Resolution: Fixed
    Fix Version/s: 3.0.0

Issue resolved by pull request 24655
[https://github.com/apache/spark/pull/24655]

> SHA1, MD5, and Base64 expression codegen doesn't work when commons-codec is shaded
> ----------------------------------------------------------------------------------
>
>                 Key: SPARK-27786
>                 URL: https://issues.apache.org/jira/browse/SPARK-27786
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 2.4.0
>            Reporter: Josh Rosen
>            Assignee: Josh Rosen
>            Priority: Minor
>             Fix For: 3.0.0
>
>
> When running a custom build of Spark which shades {{commons-codec}}, the {{sha1Hex}} expression generates code which doesn't compile:
> {code}
> org.apache.spark.sql.catalyst.expressions.codegen.CodeGenerator: failed to compile: org.codehaus.commons.compiler.CompileException: File 'generated.java', Line 47, Column 93: A method named "sha1Hex" is not declared in any enclosing class nor any supertype, nor through a static import
> {code}
> This is caused by an interaction between Spark's code generator and the shading: the current code generator embeds "org.apache.commons.codec.digest.DigestUtils.sha1Hex" into a larger codegen template, preventing JarJarLinks from being able to replace it with the shaded class's name. The generated code ends up using the unshaded name but the unshaded dependency isn't on our classpath, triggering the above compilation error.
> To fix this problem and allow for proper shading, we can replace the hardcoded string literal with {{classof[DigestUtils].getName}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@spark.apache.org
For additional commands, e-mail: issues-help@spark.apache.org