スパークジョブ中にS3バケットの内容をEMRにリストする方法を理解できません。私は、次のEMRのS3フォルダを一覧表示
Configuration conf = spark.sparkContext().hadoopConfiguration();
FileSystem s3 = S3FileSystem.get(conf);
List<LocatedFileStatus> list = toList(s3.listFiles(new Path("s3://mybucket"), false))
これは、常に次のエラー
hadoopConfigurationfs.defaultFS -> hdfs://**********.eu-central-1.compute.internal:8020
で
java.lang.IllegalArgumentException: Wrong FS: s3://*********/, expected: hdfs://**********.eu-central-1.compute.internal:8020
と私はちょうどプロトコルを使用していない場合、私はそれを理解する方法は失敗をやってみたかった /myfolder/myfileの代わりにhdfs:// myfolder/myfileを指定すると、デフォルトでdf.defaultFSになります。 しかし、私は自分のs3:// mybucket/fs.defaultFSを指定しても問題ありません。
ディレクトリ情報にはどのようにアクセスしますか? spark.read.parquet( "s3://mybucket/*.parquet")はうまくいきますが、この作業のためにいくつかのファイルの存在をチェックする必要がありますし、いくつかのファイルを削除したいと思います。私はorg.apache.hadoop.fs.FileSystemが正しいツールであると想定していました。
PS:ロギングの仕組みもわかりません。デプロイメントモードのクラスタを使用している場合(クライアントモードでは動作しないs3からjarsをデプロイしたい場合)、私はs3:// logbucket/j -.../containers/application内のログのみを見つけることができます。/conatiner...0001。 S3で表示されるまでかなりの遅延があります。どのように私はマスターでsshを介してそれを見つけるのですか?またはスパークのアプリケーションログをチェックするために、より高速で/より良い方法がいくつかありますか? 更新:ちょうど/mnt/var/log/hadoop-yarn/containers
の下にそれらが見つかりましたが、それは糸によって所有されています:糸とhadoopユーザーとして私はそれを読むことができません。 :(アイデア