Ответ 1
Можно ли преобразовать фреймворк Pandas в RDD?
Хорошо, да, вы можете это сделать. Pandas Кадры данных
pdDF = pd.DataFrame([("foo", 1), ("bar", 2)], columns=("k", "v"))
print pdDF
## k v
## 0 foo 1
## 1 bar 2
может быть преобразован в Spark Data Frames
spDF = sqlContext.createDataFrame(pdDF)
spDF.show()
## +---+-+
## | k|v|
## +---+-+
## |foo|1|
## |bar|2|
## +---+-+
и после этого вы можете легко получить доступ к базовому RDD
spDF.rdd.first()
## Row(k=u'foo', v=1)
Тем не менее, я думаю, что у вас есть неправильная идея. Pandas Data Frame - это локальная структура данных. Он хранится и обрабатывается локально на драйвере. Нет распространения данных или параллельной обработки, и он не использует атрибуты RDD (следовательно, нет rdd
). В отличие от Spark DataFrame, он предоставляет возможности произвольного доступа.
Spark DataFrame - это распределенные структуры данных с использованием RDD за кулисами. Доступ к нему можно получить, используя либо исходный SQL (sqlContext.sql
), либо SQL, как API (df.where(col("foo") == "bar").groupBy(col("bar")).agg(sum(col("foobar")))
). Случайного доступа нет, и он неизменен (эквивалент Pandas inplace
). Каждое преобразование возвращает новый DataFrame.
Если это невозможно, есть ли кто-нибудь, кто может предоставить пример использования Spark DF
Не совсем. Это очень широкая тема для SO. У Spark действительно хорошая документация, а Databricks предоставляет дополнительные ресурсы. Для начала вы проверяете их: