我是Apache spark的新手并尝试了一些POC。我正在尝试读取结构化的json日志,但是并不总是保证一些字段,例如:
{
"item": "A",
"customerId": 123,
"hasCustomerId": true,
.
.
.
},
{
"item": "B",
"hasCustomerId": false,
.
.
.
}
}
假设我想将这些JSON日志转换为CSV,我试图通过简单的Select语句来获取所有字段的Spark SQL,但是因为第二个JSON缺少一个字段(虽然它确实有一个标识符)我不知道如何我可以处理吗。
我想将上面的json日志转换为
item, customerId, ....
A , 123 , ....
B , null/0 , ....
答案 0 :(得分:-1)
您应该使用SqlContext来读取JOSN文件,sqlContext.read.json("file/path")
但是如果您想将其转换为CSV,然后您想要读取缺少的值。您的CSV文件应该看起来像
item,customerId,hasCustomerId, ....
A,123,, .... // hasCustomerId is null
B,,888, .... // customerId is null
即。空记录。然后你必须阅读这个
val df = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true") // Use first line of all files as header
.option("inferSchema", "true") // Automatically infer data types
.load("file/path")