gpt4 book ai didi

python - 如何从 S3 读取 Parquet 数据以激发 Python 数据框?

转载 作者:太空狗 更新时间:2023-10-29 18:16:22 25 4
gpt4 key购买 nike

我是 Spark 的新手,我找不到这个...我有很多 Parquet 文件上传到 s3 的位置:

s3://a-dps/d-l/sco/alpha/20160930/parquet/

此文件夹的总大小为 20+ Gb。如何分 block 并将其读入数据帧如何将所有这些文件加载​​到数据框中?

分配给 spark 集群的内存为 6 GB。

    from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark import SparkConf
from pyspark.sql import SparkSession
import pandas
# SparkConf().set("spark.jars.packages","org.apache.hadoop:hadoop-aws:3.0.0-alpha3")
sc = SparkContext.getOrCreate()

sc._jsc.hadoopConfiguration().set("fs.s3.awsAccessKeyId", 'A')
sc._jsc.hadoopConfiguration().set("fs.s3.awsSecretAccessKey", 's')

sqlContext = SQLContext(sc)
df2 = sqlContext.read.parquet("s3://sm/data/scor/alpha/2016/parquet/*")

错误:

    Py4JJavaError: An error occurred while calling o33.parquet.    : java.io.IOException: No FileSystem for scheme: s3        at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2660)        at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2667)        at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:94)        at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2703)        at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2685)        at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:373)        at org.apache.hadoop.fs.Path.getFileSystem(Path.java:295)        at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$14.apply(DataSource.scala:372)        at org.apache.spark.sql.execution.datasources.DataSource$$anonfun$14.apply(DataSource.scala:370)        at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)        at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:241)        at scala.collection.immutable.List.foreach(List.scala:381)        at scala.collection.TraversableLike$class.flatMap(TraversableLike.scala:241)        at scala.collection.immutable.List.flatMap(List.scala:344) 

最佳答案

从 Spark 2.0 开始,您必须使用 SparkSession 而不是 sqlContext

spark = SparkSession.builder
.master("local")
.appName("app name")
.config("spark.some.config.option", true).getOrCreate()

df = spark.read.parquet("s3://path/to/parquet/file.parquet")

关于python - 如何从 S3 读取 Parquet 数据以激发 Python 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44629156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com