如何在 Spark SQL 中对名称中带有前导零的目录使用通配符?

san*_*n05 1 apache-spark apache-spark-sql

提到使用spark read函数时的一些奇怪的行为:

 spark.read.json(".../date=2019-08-0[1-9]")//works
 spark.read.json(".../date=2019-08-[10-20]")//throws "Path does not exist" but folders definetily exist.
 spark.read.json(".../date=2019-08-{10,11,12,13}")//works
 spark.read.json(".../date=2019-08-[01-10]")// throws java.io.IOException: Illegal file pattern: Illegal character range near index n
Run Code Online (Sandbox Code Playgroud)

如何使用前导零通配范围?

Jas*_*Heo 5

来自Hadoop Glob 模式

\n\n
    \n
  • [abc]:匹配字符集{a,b,c}中的单个字符
  • \n
  • [a-b]:匹配字符范围 {a\xe2\x80\xa6b} 中的单个字符
  • \n
  • {ab,cd}:匹配字符串集合{ab,cd}中的一个字符串
  • \n
\n\n

因此,[10-20]匹配 {1, 0~2, 0} 之一。

\n\n

date=2019-08-[10-20]等于date=2019-08-{0,1,2},可能没有这样的文件。

\n