我有pyspark数据框,其中包含名为 Filters 的列:“ array>”
我想将数据帧保存在csv文件中,为此,我需要将数组转换为字符串类型。
我尝试将其强制转换为:DF.Filters.tostring()
和DF.Filters.cast(StringType())
,但是这两种解决方案都会为“过滤器”列中的每一行生成错误消息:
org.apache.spark.sql.catalyst.expressions.UnsafeArrayData@56234c19
代码如下
from pyspark.sql.types import StringType
DF.printSchema()
|-- ClientNum: string (nullable = true)
|-- Filters: array (nullable = true)
|-- element: struct (containsNull = true)
|-- Op: string (nullable = true)
|-- Type: string (nullable = true)
|-- Val: string (nullable = true)
DF_cast = DF.select ('ClientNum',DF.Filters.cast(StringType()))
DF_cast.printSchema()
|-- ClientNum: string (nullable = true)
|-- Filters: string (nullable = true)
DF_cast.show()
| ClientNum | Filters
| 32103 | org.apache.spark.sql.catalyst.expressions.UnsafeArrayData@d9e517ce
| 218056 | org.apache.spark.sql.catalyst.expressions.UnsafeArrayData@3c744494
样本JSON数据:
{"ClientNum":"abc123","Filters":[{"Op":"foo","Type":"bar","Val":"baz"}]}
谢谢 !!
我创建了一个样本JSON数据集来匹配该模式:
{"ClientNum":"abc123","Filters":[{"Op":"foo","Type":"bar","Val":"baz"}]}
select(s.col("ClientNum"),s.col("Filters").cast(StringType)).show(false)
+---------+------------------------------------------------------------------+
|ClientNum|Filters |
+---------+------------------------------------------------------------------+
|abc123 |org.apache.spark.sql.catalyst.expressions.UnsafeArrayData@60fca57e|
+---------+------------------------------------------------------------------+
使用explode()函数可以最佳化解决您的问题,该函数可以展平数组,然后使用星号扩展表示法:
s.selectExpr("explode(Filters) AS structCol").selectExpr("structCol.*").show()
+---+----+---+
| Op|Type|Val|
+---+----+---+
|foo| bar|baz|
+---+----+---+
使其成为由逗号分隔的单列字符串:
s.selectExpr("explode(Filters) AS structCol").select(F.expr("concat_ws(',', structCol.*)").alias("single_col")).show()
+-----------+
| single_col|
+-----------+
|foo,bar,baz|
+-----------+
几天来,我一直在考虑这个“简单”的练习,结果被困住了。我都快疯了。我需要将嵌套数组转换为HTML。下面是数组的示例: 而预期的结果应该是这样的: 我已经从一个helper函数开始(从数组创建每个标记),下面是它现在的样子: 到目前为止还不错。当我试图创建实际的HTML构建器函数时,这个棘手的部分就开始了。我想迭代数组的每个元素,检查它是否有一个嵌套的元素(子),保存指定的标记,再深入一些。 到目前
我有一个与PHP链接的JavaScript AJAX。PHP有以下代码: 它的输出将是一个字符串: 我想用这些元素创建一个JavaScript数组: 是否有预定义的函数要使用?你有解决办法吗?
我的一个数据帧(spark.sql)有这个模式。 我需要将其保存到CSV文件,但不使用任何扁平化,以以下格式分解。 我直接使用了命令 ,这符合我的目的,但我需要一个更好的方法。我正在使用派斯帕克
我有一堆json数据,格式如下 我下面的代码在spark中,我做了一些聚合,如下所示 上面的代码给了我一个类似于 我需要将producta1列中的上述数组值转换为json对象数组,类似于 我试过类似的方法 上面的代码片段并没有给出我想要的结果。如何在spark java中实现Json对象数组?
问题内容: 我有字符串: 某种数据可能是字符串: 我如何将其全部转换为上述数组? ) 谢谢帮忙,PK 问题答案: 给定值 这里有一些我可以满足您需要的代码¹: ¹实际上,它的作用还不止于此:它可以简单地封装在一个函数中,并且可以在所有三个输入值上进行配置(您可以将一个具有现有值的数组传递给它,并在必要时对其进行扩展)。
问题内容: 我需要将结果集转换为字符串数组。我正在从数据库中读取电子邮件地址,我需要能够像这样发送它们: 这是我的阅读电子邮件地址的代码: MyOutput是: 我需要这样: 我正在使用Oracle 11g。 问题答案: 获得所需的输出: 替换这些行 通过