Ошибка toPandas () при использовании pyspark: объект 'int' не повторяется - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть фрейм данных pyspark, и я пытаюсь преобразовать его в панд с помощью toPandas (), однако я сталкиваюсь с нижеуказанной ошибкой.

Я пробовал разные варианты, но получала одну и ту же ошибку:
1) ограничивал данные только несколькими записями
2) явно использовал collect () (который, как я полагаю, используетPandas () по своей сути))

Изучил много сообщений на SO, но AFAIK ни одна не имеет проблемы toPandas ().

Снимок моего фрейма данных: -

>>sc.version 
2.3.0.2.6.5.0-292

>>print(type(df4),len(df4.columns),df4.count(),
(<class 'pyspark.sql.dataframe.DataFrame'>, 13, 296327)

>>df4.printSchema()
 root
  |-- id: string (nullable = true)
  |-- gender: string (nullable = true)
  |-- race: string (nullable = true)
  |-- age: double (nullable = true)
  |-- status: integer (nullable = true)
  |-- height: decimal(6,2) (nullable = true)
  |-- city: string (nullable = true)
  |-- county: string (nullable = true)
  |-- zipcode: string (nullable = true)
  |-- health: double (nullable = true)
  |-- physical_inactivity: double (nullable = true)
  |-- exercise: double (nullable = true)
  |-- weight: double (nullable = true)

  >>df4.limit(2).show()
+------+------+------+----+-------+-------+---------+-------+-------+------+-------------------+--------+------------+
|id    |gender|race  |age |status |height | city    |county |zipcode|health|physical_inactivity|exercise|weight      |
+------+------+------+----+-------+-------+---------+-------+-------+------+-------------------+--------+------------+
| 90001|  MALE| WHITE|61.0|      0|  70.51|DALEADALE|FIELD  |  29671|  null|               29.0|    49.0|       162.0|
| 90005|  MALE| WHITE|82.0|      0|  71.00|DALEBDALE|FIELD  |  36658|  16.0|               null|    49.0|       195.0|
+------+------+------+----+-------+-------+---------+-------+-------+------+-------------------+--------+------------+
*had to mask few features due to data privacy concerns

Ошибка: -

>>df4.limit(10).toPandas()

'int' object is not iterable
Traceback (most recent call last):
  File "/repo/python2libs/pyspark/sql/dataframe.py", line 1968, in toPandas
pdf = pd.DataFrame.from_records(self.collect(), columns=self.columns)
  File "/repo/python2libs/pyspark/sql/dataframe.py", line 467, in collect
return list(_load_from_socket(sock_info,     BatchedSerializer(PickleSerializer())))
  File "/repo/python2libs/pyspark/rdd.py", line 142, in _load_from_socket
port, auth_secret = sock_info
TypeError: 'int' object is not iterable

1 Ответ

0 голосов
/ 11 сентября 2018

В нашем собственном хранилище библиотек был пакет для pyspark, который конфликтовал с pyspark, предоставляемым кластером spark, и каким-то образом работал с оболочкой Spark, но не работал на ноутбуке.
Итак, переименование библиотеки pyspark в пользовательском репозитории решило проблему!

...