我可以使用spark进行自定义计算吗?

icnyk63a  于 2021-05-24  发布在  Spark
关注(0)|答案(1)|浏览(421)

我有一些(200ish)大zip文件(有些大于1gb),应该使用python地理和图像处理库来解压缩和处理。结果将作为新文件写入filestore,然后用于databricks中的ml任务。
如果我想利用spark集群的处理能力,一般的方法是什么?我正在考虑将文件名添加到Dataframe中,并使用用户定义的函数通过select或类似方法来处理它们。我相信我应该能够使这个在集群上并行运行,在集群中工作人员将只获得文件名,然后在本地加载文件。
这是合理的,还是有完全不同的方向我应该去?
更新-或者像这样:

zipfiles = ...

def f(x):
  print("Processing " + x)

spark = SparkSession.builder.appName('myApp').getOrCreate()
rdd = spark.sparkContext.parallelize(zipfiles)
rdd.foreach(f)

更新2:任何人这样做。由于默认情况下spark将保留几乎所有可用的内存,因此您可能必须使用以下设置来减少这些内存:spark.executor.memory 1g,否则您可能会很快耗尽工作机上的内存。

lmyy7pcs

lmyy7pcs1#

是的,您可以使用spark作为通用的并行处理引擎,给出或接受一些序列化问题。例如,在一个项目中,我使用spark并行扫描了许多bloom过滤器,并随机访问bloom过滤器返回正值的索引文件。对于这种定制的解决方案,您很可能需要使用rddapi。

相关问题