考虑到这一点,似乎在过去做过这件事,但是…:
val arrayStructData2 = Seq(
Row("James", 2),
Row("Alex", 3)
)
val arrayStructSchema2 = new StructType()
.add("names",new StructType()
.add("name", StringType)
.add("extraField", IntegerType)
)
val df = spark.createDataFrame(spark.sparkContext.parallelize(arrayStructData2),arrayStructSchema2)
df.printSchema()
df.show()
我明白了:
...
Caused by: RuntimeException: java.lang.String is not a valid external type for schema of struct<name:string,extraField:int>
无法立即看到它。
当您使用createDataFrame
创建DataFrame
时,您注册了架构,但实际上没有评估任何内容,这就是为什么df.printSchema
按预期工作。当您执行df.show
时,DataFrame
被评估,Spark尝试将您给它的第一个值(在本例中为String)加载到结构
中,这会导致您看到的runtimeException
。这是Spark 3.1.1的caladoc:
使用给定的模式从包含行的java.util.List创建DataFrame。确保提供的List的每一行的结构都与提供的模式匹配非常重要。否则,将出现运行时异常。
它告诉你,你正试图将一个字符串强制转换成一个结构体。
对于其他人,作为一个提醒,需要行(行...就像:
val arrayStructData2 = Seq(
Row(Row("James", 2)),
Row(Row("Alex", 3))
)
不是很明显的错误。
此代码不起作用的可能原因是什么?如何修复它?是的,f1、f2、f3、f4字段没有使用,但在生产性代码中,getList有一个参数xml\u data,所以我将xml\u数据字段传递给方法并获取List[AnyRef]
问题内容: 给我一个字符串,如果有一个或多个无效字符,则必须返回False,否则返回True。需要注意的是,我只能内置函数和str操作(例如:in,+,indexing,len)和递归。到目前为止,我没有用: 显然,由于递归,该代码无法正常工作,并且在下一次递归迭代之后才将变量加1 。 问题答案: 对于小尺寸(约一千个字符)的DNA序列,这是一个实际的实现 注意事项 在python中使用递归要小心
给我一个字符串,如果有一个或多个无效字符,必须返回False,否则返回true。需要注意的是,我只能内置函数和字符串操作(例如:in,+,indexing,len)和递归。到目前为止,我所掌握的一切都不起作用: 显然,由于递归的原因,这段代码无法工作,在下一次递归迭代之后,将1添加到变量中会被删除。
我想知道您是否可以在hasNext(字符串模式)中指定要扫描的内容。例如,我想检索正在扫描的行的前三个字符。那么有没有办法指定诸如 在这里我要抓取该行的前3个字母字符。
我必须向客户提供上传他自己的JSON模式的可能性。 是否有方法验证用户提供的JSON模式是有效的JSON模式,而不仅仅是数据? 我在这个库中使用Javahttps://github.com/networknt/json-schema-validator 更新: 我有以下模式: 我需要知道这是否是一个有效的JSON模式,而不是JSON数据。此处提供了一个JSON数据示例:
问题内容: 我正在寻找Java代码来检查字符串是否为有效的XML。 问题答案: 用正则表达式验证XML是不可能的。XML不是常规语言。 使用XML解析器尝试将字符串解析为XML,或者对照模式(例如DTD或XSD文件)验证XML文档。