【问题标题】:How to read files in parallel in DataBricks?如何在 DataBricks 中并行读取文件?
【发布时间】:2020-03-19 12:29:36
【问题描述】:

谁能告诉我如何并行读取文件?我正在尝试这样的事情:

def processFile(path):
  df = spark.read.json(path)
  return df.count()

paths = ["...", "..."]

distPaths = sc.parallelize(paths)
counts = distPaths.map(processFile).collect()
print(counts)

它失败并出现以下错误:

PicklingError:无法序列化对象:异常:您似乎正试图从广播变量、操作或转换中引用 SparkContext。 SparkContext 只能在驱动程序上使用,不能在它在工作人员上运行的代码中使用。有关详细信息,请参阅 SPARK-5063。

还有其他方法可以优化吗?

【问题讨论】:

标签: python apache-spark databricks azure-databricks


【解决方案1】:

在您的特定情况下,您可以将整个 paths 数组传递给 DataFrameReader:

df = spark.read.json(paths)

...Spark 将并行读取其文件元素。

【讨论】:

    猜你喜欢
    • 2021-02-12
    • 1970-01-01
    • 2019-03-14
    • 2022-10-21
    • 2019-07-25
    • 2020-06-30
    • 2018-10-22
    • 2021-06-21
    • 2020-12-25
    相关资源
    最近更新 更多