4

我正在尝试将我的 Pandas 数据框转换为 PySpark 数据框。createDataFrame 函数不起作用,所以我找到了 PyArrow。

我可以转换 Pandas --> PyArrow 表,但我找不到任何方法来转换 PyArrow 表 --> Spark

有谁知道我如何实现这一目标?

谢谢

4

1 回答 1

2

然而,这个问题的迟到回复,它一直在我的搜索中出现,所以我想我会提供一个我用过的方法,也许它会帮助其他用户。

我正在使用 pyarrow 从 s3 对象读取镶木地板文件,然后将其转换为 pandas 数据框。然后,我可以使用 spark 会话将这个 pandas 数据帧转换为 spark 数据帧。

import boto3
import pandas as pd
import io
import pyarrow.parquet as pq
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession

sc = SparkContext('local') #Pyspark normally has a spark context (sc) configured so this may not be necessary, use this if calling a python script using spark-submit
spark = SparkSession(sc) #This is used to convert the pandas dataframe to a spark dataframe

s3 = boto3.resource(/
service_name='s3',/
use_ssl=False,/
aws_access_key_id='S3_ACCESS_KEY_ID',/
aws_secret_access_key='S3_ACCESS_KEY',/
endpoint_url='S3_URL')

bucket_name = 'BUCKET_NAME'
object_name = 'OBJECT_NAME'

buffer = io.BytesIO()
s3_object = s3.Object(bucket_name,object_name)
s3_object.download_fileobj(buffer)
table = pq.read_table(buffer)
df = table.to_pandas()
df_spark = spark.createDataFrame(df) #**Conversion from pandas df to spark df**

您所需要的只是一个将 pandas 数据帧转换为 spark 数据帧的 spark 会话。我包含了 pyarrow 的附加信息,因为在搜索 pyarrow 时会出现这篇文章。

于 2019-08-15T04:24:18.537 回答