你能从 pyspark.sql.dataframe.DataFrame 构造 pyspark.pandas.DataFrame 吗?
Can you construct pyspark.pandas.DataFrame from pyspark.sql.dataframe.DataFrame?
我是 Spark / Databricks 的新手。我的问题是是否建议/可能混合使用 sql 和 Pandas API 数据帧?是否可以创建 pyspark.pandas.DataFrame directly from a pyspark.sql.dataframe.DataFrame,或者我需要重新读取 parquet 文件?
# Suppose you have an SQL dataframe (now I read Boston Safety Data from Microsoft Open Dataset)
blob_account_name = "azureopendatastorage"
blob_container_name = "citydatacontainer"
blob_relative_path = "Safety/Release/city=Boston"
blob_sas_token = r""
wasbs_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)
spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name), blob_sas_token)
print('Remote blob path: ' + wasbs_path)
df = spark.read.parquet(wasbs_path)
# Convert df to pyspark.pandas.Dataframe
df2 = # ...?
已尝试 df.toPandas()
,效果不佳,因为它会转换为普通的、未分发的 pandas.core.frame.DataFrame
。
解决方法是再次将镶木地板读入 pyspark.pandas.Dataframe
,我尽量避免这样做。
谢谢!
IIUC 您希望将 spark 数据帧转换为 pandas on spark 数据帧。
您可以使用 to_pandas_on_spark
方法。
df2 = df.to_pandas_on_spark()
print(type(df2))
<class 'pyspark.pandas.frame.DataFrame'>
我是 Spark / Databricks 的新手。我的问题是是否建议/可能混合使用 sql 和 Pandas API 数据帧?是否可以创建 pyspark.pandas.DataFrame directly from a pyspark.sql.dataframe.DataFrame,或者我需要重新读取 parquet 文件?
# Suppose you have an SQL dataframe (now I read Boston Safety Data from Microsoft Open Dataset)
blob_account_name = "azureopendatastorage"
blob_container_name = "citydatacontainer"
blob_relative_path = "Safety/Release/city=Boston"
blob_sas_token = r""
wasbs_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)
spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name), blob_sas_token)
print('Remote blob path: ' + wasbs_path)
df = spark.read.parquet(wasbs_path)
# Convert df to pyspark.pandas.Dataframe
df2 = # ...?
已尝试 df.toPandas()
,效果不佳,因为它会转换为普通的、未分发的 pandas.core.frame.DataFrame
。
解决方法是再次将镶木地板读入 pyspark.pandas.Dataframe
,我尽量避免这样做。
谢谢!
IIUC 您希望将 spark 数据帧转换为 pandas on spark 数据帧。
您可以使用 to_pandas_on_spark
方法。
df2 = df.to_pandas_on_spark()
print(type(df2))
<class 'pyspark.pandas.frame.DataFrame'>