I created a spark DataFrame in a Python paragraph in Zeppelin.
sqlCtx = SQLContext(sc)
spDf = sqlCtx.createDataFrame(df)
and df
is a pandas dataframe
print(type(df))
<class 'pandas.core.frame.DataFrame'>
what I want to do is moving spDf
from one Python paragraph to another Scala paragraph. It look a reasonable way to do is using z.put
.
z.put("spDf", spDf)
and I got this error:
AttributeError: 'DataFrame' object has no attribute '_get_object_id'
Any suggestion to fix the error? Or any suggestion to move spDf
?
Scala is faster than Python due to its static type language. If faster performance is a requirement, Scala is a good bet. Spark is native in Scala, hence making writing Spark jobs in Scala the native way.
Scala programming language is 10 times faster than Python for data analysis and processing due to JVM. The performance is mediocre when Python programming code is used to make calls to Spark libraries but if there is lot of processing involved than Python code becomes much slower than the Scala equivalent code.
This thread has a dated performance comparison. “Regular” Scala code can run 10-20x faster than “regular” Python code, but that PySpark isn't executed liked like regular Python code, so this performance comparison isn't relevant. PySpark is converted to Spark SQL and then executed on a JVM cluster.
You canput
internal Java object not a Python wrapper:
%pyspark
df = sc.parallelize([(1, "foo"), (2, "bar")]).toDF(["k", "v"])
z.put("df", df._jdf)
and then make sure you use correct type:
val df = z.get("df").asInstanceOf[org.apache.spark.sql.DataFrame]
// df: org.apache.spark.sql.DataFrame = [k: bigint, v: string]
but it is better to register temporary table:
%pyspark
# registerTempTable in Spark 1.x
df.createTempView("df")
and use SQLContext.table
to read it:
// sqlContext.table in Spark 1.x
val df = spark.table("df")
df: org.apache.spark.sql.DataFrame = [k: bigint, v: string]
To convert in the opposite direction see Zeppelin: Scala Dataframe to python
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With