Comments (5)
A quick investigation revealed the following:
24/03/24 11:58:38 DEBUG LineageHarvester: Harvesting lineage from class org.apache.spark.sql.execution.datasources.LogicalRelation
24/03/24 11:58:38 DEBUG LineageHarvester: class org.apache.spark.sql.execution.datasources.LogicalRelation was not recognized as a write-command. Skipping.
It happens because when calling the mentioned collect(), head() and toPandas()
methods from pyspark
the funcName
parameter in the query listener receives the value "collectToPython"
which is not among the expected function names in default plugin settings.
More investigation is required to put a future proof fix to this, but as a quick workaround you may simply add collectToPython
function name to the list of the intercepted function names like this:
pyspark ... \
--conf "spark.spline.plugins.za.co.absa.spline.harvester.plugin.embedded.NonPersistentActionsCapturePlugin.funcNames=head,count,collect,collectAsList,collectToPython,toLocalIterator"
from spline-spark-agent.
@wajda Thank you for the respond. Now head
, collect
and toPandas
methods work as expected. Unfortunately, I still have issues with method toLocalIterator
. According, pyspark sources, this method should be called toPythonIterator
:
But it's still not tracked by spline with option:
spark.spline.plugins.za.co.absa.spline.harvester.plugin.embedded.NonPersistentActionsCapturePlugin.funcNames=head,count,collect,collectAsList,collectToPython,toLocalIterator,toPythonIterator
I tried to run pyspark with option spark.spline.logging.level=DEBUG
, but I didn't get any output. Any ideas?
from spline-spark-agent.
For some reason the QueryExecutionListener
isn't called on that operation at all. I don't know why, I would need to dig deep inside pyspark
source code, which I honestly do not have time to do right now. But the point is that Spline can only track events it's notified about through the listener. In this case there is no notification, so unfortunately, there is hardly luckily anything we can do about it without fixing it in Spark (pyspark) and contributing back to Spark.
@affect205 if you could help us with digging deeper and investigate why the Spark QueryExecutionListener
isn't called on that method, that would be a great help.
You don't even need Spline for this investigation. Just create and register your own simple listener that prints out stuff.
from spline-spark-agent.
as for the
I tried to run pyspark with option
spark.spline.logging.level=DEBUG
, but I didn't get any output. Any ideas?
I call spark.sparkContext.setLogLevel("DEBUG")
when in pyspark
console to change the logging level.
from spline-spark-agent.
Got it. Tracking of collect
and toPandas
was critical in our project. But toLocalIterator
tracking would also be useful for us. I will see what can do.
from spline-spark-agent.
Related Issues (20)
- Spline agent affecting databricks driver performance HOT 7
- Datahub integration reference link HOT 1
- Getting error while connecting tryng to use Kafka dispatcher HOT 1
- Initialization failure handling control HOT 2
- Cant track org.apache.hadoop.fs.rename
- use splineAgent as a Jar file HOT 12
- Spline Agent required for spark 3.4 version and Scala 2.12 HOT 2
- Facing issues while sending Databricks Lineage (Spline) to kafka HOT 1
- Support for spark 3.5 HOT 1
- Does spline solution support snowpark
- Support of setting the arangoDB name on the configuration HOT 7
- Need to deploy on Synapse environment in order to track lineage for Synapse notebooks HOT 1
- Unity Catalog Support to get the Notebook details
- Support for AWS Glue DynamicFrame HOT 2
- Error when running spark application with agent-core as queryExecutionListeners in java 17
- Spline Support of Statment Create table as select HOT 11
- Using Spline in Spark Scala project HOT 1
- Can Spline support lineage for AWS glue Spark dynamic frames? HOT 1
- Customized Listener HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from spline-spark-agent.