我正在使用scala,并尝试写入包含字符串内容的文件, 到S3。 我尝试使用FileSystem做到这一点, 但我得到一个错误: “错误的FS:s3a”
val content = "blabla"
val fs = FileSystem.get(spark.sparkContext.hadoopConfiguration)
val s3Path: Path = new Path("s3a://bucket/ha/fileTest.txt")
val localPath= new Path("/tmp/fileTest.txt")
val os = fs.create(localPath)
os.write(content.getBytes)
fs.copyFromLocalFile(localPath,s3Path)
我遇到一个错误:
java.lang.IllegalArgumentException: Wrong FS: s3a://...txt, expected: file:///
怎么了?
谢谢!
答案 0 :(得分:2)
您需要为该方案请求特定的文件系统,然后可以直接在远程系统上创建文本文件。
val s3Path: Path = new Path("s3a://bucket/ha/fileTest.txt")
val fs = s3Path.getFilesystem(spark.sparkContext.hadoopConfiguration)
val os = fs.create(s3Path, true)
os.write("hi".getBytes)
os.close
无需本地编写和上传; s3a连接器将根据需要缓冲并上传