Я только что понял, что могу сделать следующее в Scala
val df = spark.read.csv("test.csv")
val df1=df.map(x=>x(0).asInstanceOf[String].toLowerCase)
Однако в Python
, если я попытаюсь вызвать функцию map
для DataFrame
, это вызовет ошибку.
df = spark.read.csv("Downloads/test1.csv")
df.map(lambda x: x[1].lower())
Ошибка
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/Cellar/apache-spark/2.4.3/libexec/python/pyspark/sql/dataframe.py", line 1300, in __getattr__
"'%s' object has no attribute '%s'" % (self.__class__.__name__, name))
AttributeError: 'DataFrame' object has no attribute 'map'
В Python
Мне нужно явно преобразовать Dataframe
в RDD
.
У меня вопрос, почему, мне нужно сделать это в случае Python?
Это различие в реализации Spark API или Scala
незаметно преобразует DataFrame
в RDD
назад и снова в DataFrame