Skip to content

[SPARK-34463][PYSPARK][DOCS] Document caveats of Arrow selfDestruct - #31738

Closed
lidavidm wants to merge 2 commits into
apache:masterfrom
lidavidm:spark-34463
Closed

[SPARK-34463][PYSPARK][DOCS] Document caveats of Arrow selfDestruct#31738
lidavidm wants to merge 2 commits into
apache:masterfrom
lidavidm:spark-34463

Conversation

@lidavidm

Copy link
Copy Markdown
Member

What changes were proposed in this pull request?

As a followup for #29818, document caveats of using the Arrow selfDestruct option in toPandas, which include:

  • toPandas() may be slower;
  • the resulting dataframe may not support some Pandas operations due to immutable backing arrays.

Why are the changes needed?

This will hopefully reduce user confusion as with SPARK-34463.

Does this PR introduce any user-facing change?

Yes - documentation is updated and a config setting description is updated to clearly indicate the config is experimental.

How was this patch tested?

This is a documentation-only change.

@lidavidm

Copy link
Copy Markdown
MemberAuthor

CC @WeichenXu123 and @BryanCutler.

Comment threadsql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala Outdated
Comment threadpython/docs/source/user_guide/arrow_pandas.rst Outdated
Comment threadpython/docs/source/user_guide/arrow_pandas.rst Outdated
@HyukjinKwon

Copy link
Copy Markdown
Member

ok to test

@SparkQA

Copy link
Copy Markdown

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/40375/

@SparkQA

Copy link
Copy Markdown

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/40375/

@SparkQA

Copy link
Copy Markdown

Test build #135793 has finished for PR 31738 at commit af26e25.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@SparkQA

Copy link
Copy Markdown

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/40397/

@SparkQA

Copy link
Copy Markdown

Kubernetes integration test status success
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/40397/

@SparkQA

Copy link
Copy Markdown

Test build #135815 has finished for PR 31738 at commit b231ac6.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we explicitly say which version pandas will trigger the bug ?

Currently my test show that pandas version > 1.0.5 will trigger the bug.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I haven't fully explained the nature of this - it's not any single issue in Pandas, nor is it specific to any particular version. Instead, it's just that depending on how each Pandas operation was implemented underneath, it may or may not have been declared to accept an immutable backing array, independently of whether that operation could be implemented on an immutable array. So whether you see this will depend on what exactly you do with the dataframe, and there's no one version range we can list or one issue we can link to. And indeed, you could see this error see this without this Arrow option enabled; it's just much less likely, since there will be few cases that Arrow can perform a zero-copy conversion in that case.

@dongjoon-hyundongjoon-hyun left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just two questions.

  • When can we remove this Experimental tag?
  • Can we hold on this PR until we make a branch for Apache Spark 3.2.0?

@lidavidm

Copy link
Copy Markdown
MemberAuthor

Just two questions.

  • When can we remove this Experimental tag?

It's hard to say, but once it sees some usage, we can see how many such cases in Pandas need fixing. It might be the case that most Pandas operations work; even the one in the linked issue is already fixed upstream.

  • Can we hold on this PR until we make a branch for Apache Spark 3.2.0?

No objections here.

@BryanCutlerBryanCutler left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, just a minor suggestion to maybe include a workaround in the doc. I'll try to keep an eye out for the 3.2.0 branch and then merge if not done already.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be good to say a workaround is to make a copy of the column(s) used in the operation? I suppose they could just disable the setting is most cases though.

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably, but still worth a brief mention.

@SparkQA

Copy link
Copy Markdown

Test build #136261 has started for PR 31738 at commit 19183a0.

@SparkQA

Copy link
Copy Markdown

Kubernetes integration test starting
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/40843/

@SparkQA

Copy link
Copy Markdown

Kubernetes integration test status failure
URL: https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder-K8s/40843/

Comment threadpython/docs/source/user_guide/arrow_pandas.rst Outdated
Comment threadpython/docs/source/user_guide/arrow_pandas.rst Outdated
@HyukjinKwon

Copy link
Copy Markdown
Member

I am okay with this too.

Co-authored-by: Hyukjin Kwon <gurwls223@gmail.com>
@SparkQA

Copy link
Copy Markdown

Test build #136650 has finished for PR 31738 at commit b0115e5.

  • This patch passes all tests.
  • This patch merges cleanly.
  • This patch adds no public classes.

@HyukjinKwon

Copy link
Copy Markdown
Member

Merged to master.

@lidavidm

Copy link
Copy Markdown
MemberAuthor

Thank you both for the review!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@lidavidm@HyukjinKwon@SparkQA@BryanCutler@dongjoon-hyun@WeichenXu123