我在googledataprocclusterversion1.4和sparkversion2.4.5中运行了一个spark作业,它从gs bucket读取路径中带有正则表达式的文件,并得到下面的错误。
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的DataProc1.2集群中运行相同的作业,并且能够从路径读取文件。
我们在spark 2.4.5中形成正则表达式的方式是否有任何更改,或者dataproc 1.4 cluster的google api是否有任何更改,这需要更改我用正则表达式创建这些路径的方式。
1条答案
按热度按时间ecfdbz9o1#
通过在集群创建期间设置这些hadoop属性,在gcs连接器中禁用flat glob算法后,问题就解决了。
core:fs.gs.glob.flatlist.enable=false
core:fs.gs.glob.concurrent.enable=false
我们还将gcs\连接器\ U版本从1.9.17升级到1.9.18。