python-3.x - 使用 Spark Local 从 GCS 加载数据

标签 python-3.x intellij-idea pyspark google-cloud-platform python-unittest

我正在尝试从本地计算机上的 GCS 存储桶读取数据,以进行测试。我想对云中的一些数据进行采样 我已经下载了GCS Hadoop Connector JAR .

并按如下方式设置sparkConf:

conf = SparkConf() \
    .setMaster("local[8]") \
    .setAppName("Test") \
    .set("spark.jars", "path/gcs-connector-hadoop2-latest.jar") \
    .set("spark.hadoop.google.cloud.auth.service.account.enable", "true") \
    .set("spark.hadoop.google.cloud.auth.service.account.json.keyfile", "path/to/keyfile")

sc = SparkContext(conf=conf)

spark = SparkSession.builder \
    .config(conf=sc.getConf()) \
    .getOrCreate()

spark.read.json("gs://gcs-bucket")

我也尝试像这样设置conf:

sc._jsc.hadoopConfiguration().set("fs.AbstractFileSystem.gs.impl",  "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS")
sc._jsc.hadoopConfiguration().set("fs.gs.auth.service.account.json.keyfile", "path/to/keyfile")
sc._jsc.hadoopConfiguration().set("fs.gs.auth.service.account.enable", "true")

我正在通过 PIP 使用 PySpark 安装,并使用 IntelliJ 的单元测试模块运行代码

py4j.protocol.Py4JJavaError: An error occurred while calling o128.json.
: java.io.IOException: No FileSystem for scheme: gs

我应该做什么?

谢谢!

最佳答案

要解决此问题,除了已配置的属性之外,您还需要添加 fs.gs.impl 属性的配置:

sc._jsc.hadoopConfiguration().set("fs.gs.impl", "com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem")

关于python-3.x - 使用 Spark Local 从 GCS 加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55059063/

相关文章:

Python 3 Selenium 自动填充

visual-studio - 我可以像 Visual Studio 一样设置 Intellij IDE 的环境吗?

java - HTTP 状态 404 -/com.demo/rest/hello - 使用 Rest 项目

python - PySpark 和方法链

python - 使用 Python 将 XML 合并到父 XML 文件中

与start()相关的Python多线程性能问题

如果按钮出现在屏幕上,Python selenium 单击按钮

intellij-idea - 没有JRebel IDE插件的Gradle + JRebel + rebel-remote.xml

apache-spark - 如何在 pyspark 中合并具有条件的两列?

python - 如何将 pyspark 中的一列映射到多列?