+-----------+----------+-------------+
|Id |Position |playerName |
+-----------+-----------+------------+
|10125 |Forward |Messi |
|10126 |Forward |Ronaldo |
|10127 |Midfield |Xavi |
|10128 |Midfield |Neymar |
case class caseClass (
Id: Int = "",
Position : String = "" ,
playerName : String = ""
)
List(
StructField("Id", IntegerType, true),
StructField("Position",StringType, true),
StructField("playerName", StringType,true)
)
spark.sparkContext.parallelize(data),
myschema
)
// data
val playersDF = Seq(
(10125, "Forward", "Messi"),
(10126, "Forward", "Ronaldo"),
(10127, "Midfield", "Xavi"),
(10128, "Midfield", "Neymar")
).toDF("Id", "Position", "playerName")
// action
val playersStructuredDF = playersDF.select($"Id", struct("playerName", "Position").as("playerDetails"))
// display
playersStructuredDF.printSchema()
playersStructuredDF.show(false)
root
|-- Id: integer (nullable = false)
|-- playerDetails: struct (nullable = false)
| |-- playerName: string (nullable = true)
| |-- Position: string (nullable = true)
+-----+------------------+
|Id |playerDetails |
+-----+------------------+
|10125|[Messi, Forward] |
|10126|[Ronaldo, Forward]|
|10127|[Xavi, Midfield] |
|10128|[Neymar, Midfield]|
+-----+------------------+
我有一个平面数据帧(),结构如下: 我需要将这个数据帧转换为如下结构(因为我的下一个数据将采用这种格式): 到目前为止,我已经实现了: 我可以看到为生成的正确架构,但它在我尝试获取一些实际数据的最后一行给出了错误。我收到一个错误,说无法执行用户定义的函数。 有没有更好的方法来实现这一目标?
我有一个具有如下结构的数据帧: 但是是Any类型,我无法提取它的任何字段。有人能说出我做错了什么,或者我应该遵循什么方法来代替这个吗? 谢谢
我试图从一个简单的熊猫数据流创建一个火花数据流。这是我遵循的步骤。 在这之前一切都好。输出为: Spark UI 版本:V2.4.0 主人:本地[*]
问题内容: 我有一个带有2 ArrayType字段的PySpark DataFrame: 我想将它们合并为一个ArrayType字段: 适用于字符串的语法在这里似乎不起作用: 谢谢! 问题答案: 火花 > = 2.4 您可以使用功能(SPARK-23736): 要保留其中一个值时的数据,可以使用: 火花 <2.4 不幸的是,一般情况下要串联列,您将需要一个UDF,例如: 可以用作:
我有以下类别的< code>Dataframe列: 如何创建新列并将转换为:
如何合并数组中的所有结构并生成合并的结构? 例如,使用SparkSQL,我能够读取源json文件并生成数组类型的列,数组中的每个元素都包含一个键:值对。例如,假设我们有一个ArrayType列的值,该列的名称为,值为: 我需要将这个数组类型的列转换为结构类型,其值为{a:1,b:2,c:3}。 由于我是通过读取JSON文件获得模式的,所以我可以使用派生序号获得结果,如: 这个解决方案的问题是,如果