我试图提供一个文件列表,以便spark在需要时读取(这就是为什么我不愿意使用boto或其他工具将所有文件预下载到示例中,然后才“本地”读取到spark中)。
os.environ['PYSPARK_SUBMIT_ARGS'] = "--master local[3] pyspark-shell"
spark = SparkSession.builder.getOrCreate()
spark.sparkContext._jsc.hadoopConfiguration().set('fs.s3.access.key', credentials['AccessKeyId'])
spark.sparkContext._jsc.hadoopConfiguration().set('fs.s3.access.key', credentials['SecretAccessKey'])
spark.read.json(['s3://url/3521.gz', 's3://url/2734.gz'])
我不知道local[3]
是关于什么的,但是如果没有这个--master
标志,我会得到另一个异常:Exception: Java gateway process exited before sending the driver its port number.
现在,我得到这个:
Py4JJavaError: An error occurred while calling o37.json.
: org.apache.hadoop.fs.UnsupportedFileSystemException: No FileSystem for scheme "s3"
...
不确定这里的o37.json
指的是什么,但这可能无关紧要。
我看到了一堆类似问题的答案,这些答案建议添加以下标志:
os.environ['PYSPARK_SUBMIT_ARGS'] = "--packages com.amazonaws:aws-java-sdk-pom:1.10.34,org.apache.hadoop:hadoop-aws:2.7.2 pyspark-shell"
我尝试将其前置并附加到另一个标志,但不起作用。
就像我在其他答案和互联网上其他地方看到的许多变体一样(有不同的软件包和版本),例如:
os.environ['PYSPARK_SUBMIT_ARGS'] = '--master local[*] --jars spark-snowflake_2.12-2.8.4-spark_3.0.jar,postgresql-42.2.19.jar,mysql-connector-java-8.0.23.jar,hadoop-aws-3.2.2,aws-java-sdk-bundle-1.11.563.jar'
1条答案
按热度按时间w46czmvw1#
从S3阅读文件的典型示例如下-
另外,您可以仔细检查这个答案,以确保最小化的结构和必要的模块都在适当的位置- java.io.IOException:没有用于方案的文件系统:第三节
读取 parquet - S3