我必须将Scala代码转换为python。
scala代码将string的RDD转换为case类的RDD。代码如下:
case class Stock(
stockName: String,
dt: String,
openPrice: Double,
highPrice: Double,
lowPrice: Double,
closePrice: Double,
adjClosePrice: Double,
volume: Double
)
def parseStock(inputRecord: String, stockName: String): Stock = {
val column = inputRecord.split(",")
Stock(
stockName,
column(0),
column(1).toDouble,
column(2).toDouble,
column(3).toDouble,
column(4).toDouble,
column(5).toDouble,
column(6).toDouble)
}
def parseRDD(rdd: RDD[String], stockName: String): RDD[Stock] = {
val header = rdd.first
rdd.filter((data) => {
data(0) != header(0) && !data.contains("null")
})
.map(data => parseStock(data, stockName))
}
可以在PySpark中实现吗?我尝试使用以下代码,但出现错误
from dataclasses import dataclass
@dataclass(eq=True,frozen=True)
class Stock:
stockName : str
dt: str
openPrice: float
highPrice: float
lowPrice: float
closePrice: float
adjClosePrice: float
volume: float
def parseStock(inputRecord, stockName):
column = inputRecord.split(",")
return Stock(stockName,
column[0],
column[1],
column[2],
column[3],
column[4],
column[5],
column[6])
def parseRDD(rdd, stockName):
header = rdd.first()
res = rdd.filter(lambda data : data != header).map(lambda data : parseStock(data, stockName))
return res
错误Py4JJavaError:调用z:org时出错。阿帕奇。火花应用程序编程接口。蟒蛇蟒蛇。收集和服务:组织。阿帕奇。火花SparkException:作业因阶段失败而中止:阶段21.0中的任务0失败1次,最近的失败:阶段21.0中的任务0.0丢失(TID 31,localhost,executor driver):org。阿帕奇。火花应用程序编程接口。蟒蛇PythonException:回溯(最近一次调用上次):
文件“/content/spark-2.4.5-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/worker.py”,第364行,在main func、profiler、反序列化器、serializer=read\u命令(pickleSer、infle)文件“/content/spark-2.4.5-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/worker.py”,第69行,在read\u命令command=serializer中_read\u with\u length(file)file“/content/spark-2.4.5-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/serializers.py”,第173行,在\u read\u with\u length return self中。loads(obj)File“/content/spark-2.4.5-bin-hadoop2.7/python/lib/pyspark.zip/pyspark/serializers.py”,第587行,在loads return pickle中。加载(obj,encoding=encoding)AttributeError:无法在上获取属性“main”
数据集API不适用于python。
“数据集是一个分布式数据集合。数据集是Spark 1.6中添加的一个新接口,它提供了RDD(强类型、使用强大lambda函数的能力)的优点,以及Spark SQL优化的执行引擎的优点。数据集可以从JVM对象构建,然后使用函数转换(map、flatMap、filter等)进行操作. 数据集API有Scala和Java两种版本。Python不支持Dataset API。但由于Python的动态特性,Dataset API的许多优点已经可用(即,您可以按名称自然访问行的字段row.columnName)。R的情况类似。"
https://spark.apache.org/docs/latest/sql-programming-guide.html
我正在尝试运行下面的代码,在本地安装的pyspark中创建graphframe。但我犯了个错误。我使用的是spark-2.4.0-bin-hadoop2.7版本。 我得到以下错误。
问题内容: 我正在尝试中构建一个简单的自定义。我在这里可以编写自定义的Transformer,但是我不确定如何在上执行此操作Estimator。我也不明白做什么,为什么我需要这么多的设置方法和获取方法。似乎有一个适用于自定义模型的文档(请参阅此处,但PySpark没有。 示例模型的伪代码: 问题答案: 一般来说,没有文档,因为对于Spark 1.6 / 2.0,大多数相关API都不打算公开。它应该
我有一个包含以下[('列1',值),('列2',值),('列3',值),…,('列100',值)]的RDD。我想创建一个包含带有元组的单个列的数据框。 我得到的最接近的是: 然后 但这会产生一个包含列表列的数据帧,而不是元组。
问题内容: 我相信jQuery中的.addClass()函数会将CSS类附加到当前选择中,但是我想知道是否可以在jQuery中创建或定义CSS类,然后附加它? 问题答案: 实际上,您可以创建一个CSS规则,该规则将影响当前页面上的所有元素。在大多数浏览器中,它应该很简单: 这可能在IE中起作用,也可能不起作用,但是您可以改用IE的专有addRule: 自然,这不会帮助您创建可以在网页之间共享的cs
这是在jupyter笔记本上运行的pyspark代码。 Py4JJavaError:调用None时出错。组织。阿帕奇。火花应用程序编程接口。JAVAJavaSparkContext.:JAVAlang.IllegalAccessError:课堂组织。阿帕奇。火花存储StorageUtils$(在未命名模块@0x30cb5b99中)无法访问sun类。尼奥。DirectBuffer(在模块java.b
我有一个包含3列的数据表,我想使用列投影的值创建一个新列。 应该如何从投影中选择值?--它应该选择前一年投影的3个具体值--如果您要为2020年创建一个新列,它应该从2021年、2022年和2023年选择值 我已经尝试了以下SQL: spark.sql(''从表中选择serial_number,pit_pd_proj为proj1,year,lead(pit_pd_proj,3)over(parti