使用PySpark从Blob存储容器加载CSV文件

时间:2019-04-27 22:19:54

标签: csv apache-spark pyspark azure-blob-storage

我无法通过使用Jupyter Notebook中的PySpark将CSV文件直接从Azure Blob存储直接加载到RDD中。

我已经阅读了几乎所有其他类似问题的答案,但是我没有找到具体说明来说明我要做什么。我知道我也可以使用Pandas将数据加载到Notebook中,但是之后我需要将Panda DF转换为RDD。

我理想的解决方案看起来像这样,但是此特定代码给我一个错误,即它无法推断CSV模式。

#Load Data source = <Blob SAS URL> elog = spark.read.format("csv").option("inferSchema", "true").option("url",source).load()

我也查看了以下答案:reading a csv file from azure blob storage with PySpark 但我无法定义正确的路径。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这是我与Pandas一起使用的示例代码,用于读取带有SAS令牌的blob网址,并将Pandas的数据框转换为PySpark的数据框。

首先,通过读取blob网址来获取Pandas数据框对象。

import pandas as pd

source = '<a csv blob url with SAS token>'
df = pd.read_csv(source)
print(df)

然后,您可以将其转换为PySpark。

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("testDataFrame").getOrCreate()
spark_df = spark.createDataFrame(df)
spark_df.show()

或者,与下面的代码相同的结果。

from pyspark.sql import SQLContext
from pyspark import SparkContext

sc = SparkContext()
sqlContest = SQLContext(sc)
spark_df = sqlContest.createDataFrame(df)
spark_df.show()

希望有帮助。