gatorsmile commented on a change in pull request #23534: [SPARK-26610][PYTHON] 
Fix inconsistency between toJSON Method in Python and Scala.
URL: https://github.com/apache/spark/pull/23534#discussion_r248056739
 
 

 ##########
 File path: python/pyspark/sql/dataframe.py
 ##########
 @@ -109,15 +109,18 @@ def stat(self):
     @ignore_unicode_prefix
     @since(1.3)
     def toJSON(self, use_unicode=True):
-        """Converts a :class:`DataFrame` into a :class:`RDD` of string.
+        """Converts a :class:`DataFrame` into a :class:`DataFrame` of JSON 
string.
 
-        Each row is turned into a JSON document as one element in the returned 
RDD.
+        Each row is turned into a JSON document as one element in the returned 
DataFrame.
 
         >>> df.toJSON().first()
-        u'{"age":2,"name":"Alice"}'
+        Row(value=u'{"age":2,"name":"Alice"}')
         """
-        rdd = self._jdf.toJSON()
-        return RDD(rdd.toJavaRDD(), self._sc, UTF8Deserializer(use_unicode))
+        jdf = self._jdf.toJSON()
+        if self.sql_ctx._conf.pysparkDataFrameToJSONShouldReturnDataFrame():
+            return DataFrame(jdf, self.sql_ctx)
+        else:
+            return RDD(jdf.toJavaRDD(), self._sc, 
UTF8Deserializer(use_unicode))
 
 Review comment:
   We are trying to convince more end users to learn and use our high-level 
APIs [DataFrame/Dataset] instead of low-level APIs [RDD]. Returning RDDs 
encourages our end users to choose RDD APIs, like the example you pointed out
   ```
   spark.range(1).toJSON().map(lambda value: value + "abc")
   ```
   
   Using RDD APIs will be a blackbox and an barrier for our Spark SQL 
optimizer. Basically, we are unable to optimize user application in a more 
holistic way. 
   
   For better perf, I think we should return a DataFrame instead of a RDD. cc 
@srowen @HyukjinKwon 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to