首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PySpark3从https url读取文件

PySpark3从https url读取文件
EN

Stack Overflow用户
提问于 2021-09-25 21:28:42
回答 3查看 1.7K关注 0票数 1

PySpark中是否有从.tsv.gz中读取.tsv.gz的方法?

代码语言:javascript
复制
from pyspark.sql import SparkSession

def create_spark_session():
    return SparkSession.builder.appName("wikipediaClickstream").getOrCreate()

spark = create_spark_session()
url = "https://dumps.wikimedia.org/other/clickstream/2017-11/clickstream-jawiki-2017-11.tsv.gz"
# df = spark.read.csv(url, sep="\t") # doesn't work
df = spark.read.option("sep", "\t").csv(url) # doesn't work either
df.show(10)

获取以下错误:

代码语言:javascript
复制
Py4JJavaError: An error occurred while calling o65.csv.
: java.lang.UnsupportedOperationException
---------------------------------------------------------------------------
Py4JJavaError                             Traceback (most recent call last)
/var/folders/sn/4dk4tbz9735crf4npgcnlt8r0000gn/T/ipykernel_1443/4137722240.py in <module>
      1 url = "https://dumps.wikimedia.org/other/clickstream/2017-11/clickstream-jawiki-2017-11.tsv.gz"
      2 # df = spark.read.csv(url, sep="\t")
----> 3 df = spark.read.option("sep", "\t").csv(url)
      4 df.show(10)

spark.version3.1.2

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-09-26 12:27:57

在读取文件之前,可以使用SparkContext.addFile将文件下载到每个节点,如下所示:

代码语言:javascript
复制
from pyspark import SparkFiles
from pyspark.sql import SparkSession

spark = SparkSession.builder.appName("test").getOrCreate()

url = "https://dumps.wikimedia.org/other/clickstream/2017-11/clickstream-jawiki-2017-11.tsv.gz"
spark.sparkContext.addFile(url)

df = spark.read.option("sep", "\t").csv("file://" + SparkFiles.get("clickstream-jawiki-2017-11.tsv.gz"))
df.show(10)
票数 5
EN

Stack Overflow用户

发布于 2021-09-25 23:57:32

您的问题很可能是.csv()没有期望一个url。充其量,您需要首先:

  1. 下载该文件,
  2. 解压缩它(.gz是压缩文件扩展名)

看起来您已经知道如何处理由制表符分隔的文件(正如.tsv扩展名所暗示的那样)。

票数 1
EN

Stack Overflow用户

发布于 2021-09-26 01:57:18

您需要将文件下载到本地位置(如果您在集群中运行(Ex: HDFS),则需要将文件放在HDFS位置)&使用Spark从该位置读取文件。

代码语言:javascript
复制
import wget
url = "https://dumps.wikimedia.org/other/clickstream/2017-11/clickstream-jawiki-2017-11.tsv.gz"
local_path = '/tmp/wikipediadata/clickstream-jawiki-2017-11.tsv.gz'
wget.download(url, local_path)

df = spark.read.option("sep", "\t").csv('file://'+local_path)
df.show(10)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69330177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档