apache-spark - 在 Pyspark 中从 Rest Api 创建数据框时出错
问题描述
我有一个下面的 pyspark 代码。我正在从 Rest API 读取 json 数据并尝试使用 pyspark 加载。但我无法在 Spark 中读取 DataFrame 中的数据。有人可以帮助我吗?
import urllib
from pyspark.sql.types import StructType,StructField,StringType
schema = StructType([StructField('dropoff_latitude',StringType(),True),\
StructField('dropoff_longitude',StringType(),True),
StructField('extra',StringType(),True),\
StructField('fare_amount',StringType(),True),\
StructField('improvement_surcharge',StringType(),True),\
StructField('lpep_dropoff_datetime',StringType(),True),\
StructField('mta_tax',StringType(),True),\
StructField('passenger_count',StringType(),True),\
StructField('payment_type',StringType(),True),\
StructField('pickup_latitude',StringType(),True),\
StructField('ratecodeid',StringType(),True),\
StructField('tip_amount',StringType(),True),\
StructField('tolls_amount',StringType(),True),\
StructField('total_amount',StringType(),True),\
StructField('trip_distance',StringType(),True),\
StructField('trip_type',StringType(),True),\
StructField('vendorid',StringType(),True)
])
url = 'https://data.cityofnewyork.us/resource/pqfs-mqru.json'
data = urllib.request.urlopen(url).read().decode('utf-8')
rdd = sc.parallelize(data)
df = spark.createDataFrame(rdd,schema)
df.show()```
**The Error message is TypeError: StructType can not accept object '[' in type <class 'str'>**
** I have been able to do using dataset in scala but i am not able to understand why its not possible using python **
导入 spark.implicits._
// 从纽约市出租车数据 REST API 加载 2016 年绿色出租车旅行数据的数据 val url="https://data.cityofnewyork.us/resource/pqfs-mqru.json" val result = scala.io.Source .fromURL(url).mkString
// 从 JSON 数据创建一个数据框 val taxDF = spark.read.json(Seq(result).toDS)
// 显示包含行程数据的数据框 taxDF.show()
解决方案
只为其他人..这是对我有用的代码.Request.get返回一个列表
import requests
import json
from pyspark.sql.types import StructType,StructField,StringType
schema = StructType([StructField('dropoff_latitude',StringType(),True),\
StructField('dropoff_longitude',StringType(),True),
StructField('extra',StringType(),True),\
StructField('fare_amount',StringType(),True),\
StructField('improvement_surcharge',StringType(),True),\
StructField('lpep_dropoff_datetime',StringType(),True),\
StructField('mta_tax',StringType(),True),\
StructField('passenger_count',StringType(),True),\
StructField('payment_type',StringType(),True),\
StructField('pickup_latitude',StringType(),True),\
StructField('ratecodeid',StringType(),True),\
StructField('tip_amount',StringType(),True),\
StructField('tolls_amount',StringType(),True),\
StructField('total_amount',StringType(),True),\
StructField('trip_distance',StringType(),True),\
StructField('trip_type',StringType(),True),\
StructField('vendorid',StringType(),True)
])
url = 'https://data.cityofnewyork.us/resource/pqfs-mqru.json'
r = requests.get(url)
data_json = r.json()
df = spark.createDataFrame(data_json,schema)
display(df)
推荐阅读
- ios - 从 AVCaptureDataOutputSynchronizer (Swift) 获取音频数据的问题
- git - Git Hub - 将 repo 克隆到本地机器上,然后移动并重命名本地机器的存储库
- symfony - symfony 的 form_errors 显示列表项而不仅仅是文本
- python - 计算字典中的单词
- jquery - 从 JQuery 验证器获取验证消息
- c++ - 在为 c++ 使用 fmt 库时,我应该在链接器命令行中使用哪些标志来避免架构 x86_64 错误?
- java - Java平滑移动ui元素
- python - matplotlib 中的 funcAnimation 问题
- r - 为电子邮件自定义弹性表和附加文件
- jsf - Primefaces 6.2 TabView onTabChange 表单数据为 Null