【发布时间】:2021-11-27 19:54:35
【问题描述】:
我会尽量使我的解释和设计参数尽可能彻底和简洁。因此,我已经进行了一些初始迭代,但我根本不擅长 Java(我最擅长的编码语言是 Python),或者不了解如何设置集群的体系结构,这样它就不会挂起或失败.在高层次上,我有一个巨大的数据集(大约 1.8 万亿个数据点,120 TB 的数据),其中包含 Lat、Lon 形式的位置数据。我正在使用 Apache Sedona 或 GeoSpark(努力了解如何在我的 python Pyspark 代码中配置和使用它们)
我的工作流程:
- 创建 DataProc 集群
- 从 GCS 存储桶和 BigQuery 表中加载数据(原始数据和一些参考数据集)
- 进行一些地理空间处理以提取点(例如,使用纬度、经度来分配美国州和美国县)
- 将新数据保存到 GCS 存储桶
所以我使用大约几百个点的小数据样本完成了这项工作。并且能够很好地做到这一点。当我尝试运行整个数据集时,它似乎遇到了很多问题。
以下只是我在 DataProc 作业日志中看到的一些内容:
WARN org.apache.spark.sql.execution.datasources.SharedInMemoryCache: Evicting cached table partition metadata from memory due to size constraints (spark.sql.hive.filesourcePartitionFileCacheSize = 262144000 bytes). This may impact query planning performance.
WARN org.apache.spark.scheduler.cluster.YarnSchedulerBackend$YarnSchedulerEndpoint: Requesting driver to remove executor 625 for reason Container marked as failed: container_1633477513137_0001_01_000626 on host:
ERROR org.apache.spark.scheduler.cluster.YarnScheduler: Lost executor 625
WARN org.apache.spark.scheduler.TaskSetManager: Lost task 0.0 in stage 13.0 (TID 85581) (patino-pyspark-testing-sw-r96f.[<b>removed google info here</b>].internal executor 443): FetchFailed(BlockManagerId(598...
org.apache.spark.shuffle.FetchFailedException: Failed to connect to ....
Caused by: org.apache.spark.network.client.ChunkFetchFailureException: Failure while fetching StreamChunkId[streamId=493540200000,chunkIndex=0]:
这些错误我可以持续几天,我觉得这一切都归结为我不完全了解我不知道我在做什么的 Hadoop 和 Spark 配置。
我正在采用这些方法,因为我的 BQ 操作在尝试在那里处理时超时。
我真的会很好地解释以下内容:
传递 JAR 文件的正确方法(您是在作业级别传递它们还是在创建集群时传递它们?)
如何正确安装/设置 Sedona 或 GeoSpark,并不关心使用哪一个,只是想让它工作
任何和所有设置/配置(仍然是新手,所以我对后续问题表示歉意)并且我是否在创建集群或提交作业时再次传递这些
对任何日志进行故障排除。
我知道这是一堵文字墙,我非常感谢所有帮助我的努力和 cmets。再次感谢!
【问题讨论】:
-
@BenWatson 考虑到我的集群位于 dataproc 中,我究竟做了什么。我知道如何访问集群和作业的日志,但不确定如何在容器级别查看日志
标签: apache-spark hadoop pyspark google-cloud-dataproc