Dan*_*ez 2 hadoop apache-spark google-cloud-dataproc
我以为Google Storage连接器将允许直接查询GS,就好像它是Dataproc中Spark中的HDFS一样,但是看起来以下内容不起作用(来自Spark Shell):
scala> import org.apache.hadoop.fs.FileSystem
import org.apache.hadoop.fs.FileSystem
scala> import org.apache.hadoop.fs.Path
import org.apache.hadoop.fs.Path
scala> FileSystem.get(sc.hadoopConfiguration).exists(new Path("gs://samplebucket/file"))
java.lang.IllegalArgumentException: Wrong FS: gs://samplebucket/file, expected: hdfs://dataprocmaster-m
Run Code Online (Sandbox Code Playgroud)
是否可以仅使用Hadoop API访问Google存储文件?
这是因为FileSystem.get(...)返回默认值FileSystem,根据您的配置,该默认值是HDFS,并且只能用于以开头的路径hdfs://。使用以下命令获取正确的FS。
Path p = new Path("gs://...");
FileSystem fs = p.getFileSystem(...);
fs.exists(p);
Run Code Online (Sandbox Code Playgroud)
import org.apache.spark.{SparkConf, SparkContext}
import org.apache.hadoop.fs.{FileSystem, Path}
val p = "gs://<your dir>"
val path = new Path(p)
val fs = path.getFileSystem(sc.hadoopConfiguration)
fs.exists(path)
fs.isDirectory(path)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |