如何将Spark Dataframe(在DataBrick中)写入Blob存储(在Azure中?

问题描述 投票:0回答:1

我正在DataBricks工作,那里有一个DataFrame。

type(df) 
Out: pyspark.sql.dataframe.DataFrame

我唯一想要的就是将完整的spark数据帧写入一个 Azure Blob Storage

我找到了this个帖子。所以我尝试了该代码:

# Configure blob storage account access key globally
spark.conf.set(
  "fs.azure.account.key.%s.blob.core.windows.net" % storage_name,
  sas_key)

output_container_path = "wasbs://%s@%s.blob.core.windows.net" % (output_container_name, storage_name)
output_blob_folder = "%s/wrangled_data_folder" % output_container_path

# write the dataframe as a single file to blob storage
(datafiles
 .coalesce(1)
 .write
 .mode("overwrite")
 .option("header", "true")
 .format("com.databricks.spark.csv")
 .save(output_blob_folder))

运行该代码将导致以下错误。更改镶木地板和其他格式的“ csv”部分也失败。

org.apache.spark.sql.AnalysisException: CSV data source does not support struct<AccessoryMaterials:string,CommercialOptions:string,DocumentsUsed:array<string>,Enumerations:array<string>,EnvironmentMeasurements:string,Files:array<struct<Value:string,checksum:string,checksumType:string,name:string,size:string>>,GlobalProcesses:string,Printouts:array<string>,Repairs:string,SoftwareCapabilities:string,TestReports:string,endTimestamp:string,name:string,signature:string,signatureMeaning:bigint,startTimestamp:string,status:bigint,workplace:string> data type.;

因此,我的问题(我的假设应该很简单):如何将我的Spark数据帧从DataBricks写入Azure Blob存储?]

我的Azure文件夹结构是这样的:

Account = MainStorage 
Container 1 is called "Data" # containing all the data, irrelevant because i already read this in. 
Container 2 is called "Output" # here I want to store my Spark Dataframe. 

非常感谢!

编辑

我正在使用Python。但是,我不介意解决方案是否使用其他语言(只要DataBricks支持它们,如R / Scala等)。如果可行,那就完美了:-)

我正在DataBricks工作,那里有一个DataFrame。 type(df)输出:pyspark.sql.dataframe.DataFrame我唯一想要的就是将这个完整的spark数据帧写入Azure Blob存储中。...

pyspark apache-spark-sql databricks azure-blob-storage azure-databricks
1个回答
0
投票

假设您已经安装了Blob存储,请使用以下方法将数据帧作为csv格式写入。请注意,新创建的文件将使用csv扩展名作为默认文件名,因此您可能需要使用一致的名称对其进行重命名。

© www.soinside.com 2019 - 2024. All rights reserved.