【问题标题】:Exception in thread "main" org.apache.spark.sql.AnalysisException: Path does not exist线程“主”org.apache.spark.sql.AnalysisException 中的异常:路径不存在
【发布时间】:2020-11-27 23:47:01
【问题描述】:

我在 Google dataproc 集群版本 1.4 和 spark 版本 2.4.5 中运行 spark 作业,它从 GS 存储桶的路径中读取带有正则表达式的文件并出现错误。

Exception in thread "main" org.apache.spark.sql.AnalysisException: Path does not exist: gs://<gs_path>/<file_name>_\d*.dat;
    at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$org$apache$spark$sql$execution$datasources$DataSource$$checkAndGlobPathIfNecessary$1.apply(DataSource.scala:552)
    at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$org$apache$spark$sql$execution$datasources$DataSource$$checkAndGlobPathIfNecessary$1.apply(DataSource.scala:545)

我能够在具有 spark 版本 2.2.3 的 dataproc 1.2 集群中运行相同的作业,并且能够从路径中读取文件。

我们在 spark 2.4.5 中形成正则表达式的方式是否有任何变化,或者 dataproc 1.4 集群的 google api 是否有任何变化,这需要改变我使用正则表达式创建这些路径的方式。

【问题讨论】:

  • 能否分享您的代码,以便我进一步调查?
  • 在使用 google 支持后,我被要求通过在集群 core:fs.gs.glob.flatlist.enable=false core:fs 期间设置这些 Hadoop 属性来禁用 GCS 连接器中的平面 glob 算法.gs.glob.concurrent.enable=false 我们还将 GCS_CONNECTOR_VERSION 从 1.9.17 升级到 1.9.18。在创建 dataproc 集群时设置这些属性后,上述问题得到解决。

标签: apache-spark apache-spark-sql google-cloud-storage dataproc


【解决方案1】:

通过在集群创建期间设置这些 Hadoop 属性,在 GCS 连接器中禁用平面 glob 算法后问题得到解决。

核心:fs.gs.glob.flatlist.enable=false

核心:fs.gs.glob.concurrent.enable=false

我们还将 GCS_CONNECTOR_VERSION 从 1.9.17 升级到 1.9.18。

【讨论】:

    猜你喜欢
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    相关资源
    最近更新 更多