-
Notifications
You must be signed in to change notification settings - Fork 240
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] java.lang.RuntimeException: BinaryExpressions must override either eval or nullSafeEval #1073
Comments
Wow, that is a bug in our code and something that we didn't ever expect to see happen. Typically in spark all binary expressions are foldable if the two inputs are scalar values, and then as a part of query planning they get replaced by a single scalar value. In this case it looks like it didn't happen. Can you share more of your query with us so that we can try and reproduce this failure? All I can tell from the stack trace is that your are in the middle of a Filter with a GpuBinaryExpression in the filter by clause. |
It looks like the source of the issue is the following pyspark expression:
I'm pretty sure we've used every single one of those binary expressions/operators in other places where they didn't cause any issues. |
@martinstuder But none of those operations will result in a filter happening. You are adding columns to a data frame not dropping any rows. Does your query have a |
@revans2 I was stripping down the pyspark expression too much. Yes, there is a join:
Attached is the failing SQL query plan as shown in the Spark UI (with obfuscated variable names; I hope you don't mind). |
That is really odd. The plan you posted has no GpuFilter in it, but the stack trace does. The stack trace clearly shows a shuffle writer is asking the GpuFilter for more data and the GpuFilter is blowing up. @tgravescs Is it possible that the |
this code all looks like its before the checkpoint and the plan shows all the other operators so I wouldn't think it would just be hiding a Filter. But I haven't looked much at checkpoint on data frames. Is this perhaps a filter that happens in df before this code? |
Ya that is all I could think of is that there is something happening where it goes to an RDD and then back to a data frame again. |
I found a few places in the code where we might actually hit this. So I will update the code to never call |
So I was able to reproduce something similar using coalesce.
I am not 100% sure that this is what happened in your case, but I suspect it was something similar. Binary, unary, and trinary operators did not handle this properly. Binary and trinary would try to call into |
…IDIA#1073) Signed-off-by: spark-rapids automation <[email protected]>
What is your question?
I'm running into the following exception and I'm wondering whether this is an indication of an unsupported binary expression type (I'm running rapids-4-spark v0.2.0) or whether this is a potential indication of a bug:
Unfortunately I wasn't able to identify what concrete binary expression this is referring to since the failing stage/plan includes many different binary expressions.
Environment Details
nvidia/cuda:10.2-cudnn7-runtime-ubuntu18.04
Spark Rapids configuration settings
The text was updated successfully, but these errors were encountered: