【问题标题】:Loading a CSV file from Blob Storage Container using PySpark使用 PySpark 从 Blob 存储容器加载 CSV 文件
【发布时间】:2019-09-17 00:22:14
【问题描述】:

我无法使用 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 但我无法定义正确的路径。

非常感谢您的帮助!

【问题讨论】:

  • 那么,删除 inferSchema 选项会得到什么?
  • 它说无论哪种方式都无法推断架构。
  • 你试过手动定义一个吗?
  • 还没有,我希望有一个更灵活的解决方案。但如果这是我可以尝试的唯一方法。

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


【解决方案1】:

这是我使用 Pandas 读取带有 SAS 令牌的 blob url 并将 Pandas 的数据帧转换为 PySpark 的示例代码。

首先,通过读取 blob url 来获取 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()

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 2019-05-15
    • 2023-01-30
    • 2019-12-25
    • 1970-01-01
    相关资源
    最近更新 更多