【发布时间】:2020-02-07 21:07:33
【问题描述】:
我正在尝试为程序编写测试用例。
为此,我正在读取包含以下格式数据的 CSV 文件。account_number,struct_data
123456789,{"key1":"value","key2":"value2","keyn":"valuen"}
987678909,{"key1":"value0","key2":"value20","keyn":"valuen0"}
数百个这样的行。
我需要将第二列作为结构读取。但我得到了错误
struct type expected, string type found
我尝试转换为 StructType,然后得到错误为“StringType 无法转换为 StructType”。
我应该改变我的 CSV 的方式吗?我还能做什么?
【问题讨论】:
-
csv 文件中的所有结构值是否都包含相同的架构?
-
我会改写:
struct_data字段的架构对于所有记录都相同吗?例如,它们是否具有相同且相同数量的键:key1、key2等... -
@TravisHegner 是的,struct_data 字段的架构是相同的。
-
您所做的编辑表明它不相同。如果你所有的 json 字符串都有相同的键,那么你可以使用
from_json()spark 函数将其转换为结构类型,但如果键不一样,那将不起作用。 -
@Travis 我的错,我改了。 Json 部分确实具有相同的架构。你能详细说明你想说什么吗?
标签: java apache-spark hadoop apache-spark-sql