0

我想将一个 Spark DataFrame 从 AWS SageMaker 保存到 S3。在笔记本中,我跑了

myDF.write.mode('overwrite').parquet("s3a://my-bucket/dir/dir2/")

我明白了

Py4JJavaError:调用 o326.parquet 时出错。:java.lang.RuntimeException:java.lang.ClassNotFoundException:在org.apache的org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2195)中找不到类org.apache.hadoop.fs.s3native.NativeS3FileSystem .hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2654) 在 org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2667) 在 org.apache.hadoop.fs.FileSystem.access$200(FileSystem. java:94) 在 org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2703) 在 org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2685) 在 org.apache .hadoop.fs.FileSystem.get(FileSystem.java:373) 在 org.apache.hadoop.fs.Path.getFileSystem(Path.java:295) 在 org.apache.spark.sql.execution.datasources.DataSource。

我应该如何在笔记本中正确执行?非常感谢!

4

1 回答 1

0

SageMaker 笔记本实例未运行 Spark 代码,并且没有您尝试调用的 Hadoop 或其他 Java 类。

你通常在 Jupyter notebook 中有 SageMaker python 库如 Pandas,你可以使用它来编写 parquet 文件(例如https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame .to_parquet.html)。

另一种选择是从 Jupyter 笔记本连接到现有的(或新的)Spark 集群并在那里远程执行命令。有关如何设置此连接的文档,请参阅此处:https ://aws.amazon.com/blogs/machine-learning/build-amazon-sagemaker-notebooks-backed-by-spark-in-amazon-emr/

于 2018-04-01T19:07:53.373 回答