python - PySpark3 从 https url 读取文件
问题描述
PySpark 有没有办法.tsv.gz
从 URL 中读取?
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)
得到以下错误:
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.version
是3.1.2
解决方案
您可以使用SparkContext.addFile
在读取文件之前将文件下载到每个节点,如下所示:
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)
推荐阅读
- java - 如何使用 Selenium 和 Java 单击具有 SVG 子项的链接?
- visual-studio-code - 在 VS 代码中在 Julia REPL 中运行 md 文件
- reactjs - 在 React/Nextjs 重定向之前,查找链接是否会将用户重定向到 404 页面
- sympy - 如何用 sympy 中的单个变量替换大表达式
- kotlin - 错误:类型不匹配:推断类型为 FirstFragment 但预期为上下文
- javascript - 如何在 React 的输入字段中的输入文本旁边添加永久标签
- c++ - 如何使用日期库获得两次之间的差异?
- javascript - 使用 Vue.js 在 IE 中隐藏的输入字段不显示值属性
- python - 切片列表是字典的值
- python - (django)我想在创建用户时根据他们的角色创建一个指定的模型实例