Преобразование массива NumPy в DataFrame в pyspark для экспорта в формате CSV - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть пустой массив в pyspark, и я хотел бы преобразовать его в DataFrame, чтобы я мог записать его как CSV для просмотра.

Я считал данные изначально из DataFrame, однако япришлось преобразовать в массив, чтобы использовать numpy.random.normal().Теперь я хочу преобразовать данные обратно, чтобы я мог записать их как csv для просмотра.

Я попробовал следующее непосредственно в массиве

zarr.write.csv("/mylocation/inHDFS")

, однако я получаю следующееошибка

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'numpy.ndarray' object has no attribute 'write'

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Сначала мне нужно было преобразовать массив numpy в rdd следующим образом:

zrdd = spark.sparkContext.parallelize([zarr])

Затем преобразовать это в DataFrame, используя следующее (где мы теперь также определяем заголовок столбца);

df = zrdd.map(lambda x: x.tolist()).toDF(["SOR"])

Это я мог бы выписать, как обычно, вот так;

df.write.csv("/hdfs/mylocation")
0 голосов
/ 29 ноября 2018

Массив Numpy и Spark Dataframe - это абсолютно разные структуры.Первый является локальным и не имеет имен столбцов, второй распространяется (или готов к распространению в локальном режиме) и содержит столбцы со строгой типизацией.

Я бы порекомендовал преобразовать массив Numpy в Pandas.Сначала DF, как описано здесь: Создание фрейма данных Pandas из массива Numpy: как указать столбец индекса и заголовки столбца? , а затем преобразовать его в искровой, используя:

df = spark.createDataFrame(pandas_df)
df.write.csv('/hdfs/path')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...