【发布时间】: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。
还有其他方法可以优化吗?
【问题讨论】:
-
为什么不使用线程?
-
@smx0 你能给我点文档吗?
-
@mazaneicha 谢谢。你能补充一个答案吗?我会把它标记为答案。就我而言,这就足够了。我按类型对源进行分组并传递给 spark.read.json
标签: python apache-spark databricks azure-databricks