繁体   English   中英

数据框火花中不存在列名称

[英]column names not present in dataframe spark

我目前正在使用Spark Streaming并从json中的kafka获取数据。 我将rdd转换为数据帧并将其注册为表。 在执行完此操作后,当我触发数据框中不存在列名的查询时,它将引发类似以下的错误

"'No such struct field currency in price, recipientId;'"

HEre is my query
val selectQuery = "lower(serials.brand) as brandname, lower(appname) as appname, lower(serials.pack) as packname, lower(serials.asset) as assetname, date_format(eventtime, 'yyyy-MM-dd HH:00:00') as eventtime, lower(eventname) as eventname, lower(client.OSName) as platform, lower(eventorigin) as eventorigin, meta.price as price, client.ip as ip, lower(meta.currency) as currency, cast(meta.total as int) as count"

Here is my dataframe
DataFrame[addedTime: bigint, appName: string, client: struct<ip:string>, eventName: string, eventOrigin: string, eventTime: string, geoLocation: string, location: string, meta: struct<period:string,total:string>, serials: struct<asset:string,brand:string,pack:string>, userId: string]>

现在我的json并不严格,有时某些键可能不存在。 如果数据框中没有键或列,如何安全绕过此异常?

您可以使用df.columns检查列。 有多种获取列名称和数据类型df.schema的方法。 您还可以记录架构df.printSchema()

因此,我发现的唯一方法是为json创建json模式,然后使用该模式将json解析为datafrmae

val df = sqlcontext.read.schema(schema).json(rdd)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM