apache spark DataFrame 操作读取 json 文件
apache spark DataFrame Operations reading json file
我正在尝试在 spark 上搜索词。首先,我创建 sql 上下文
scala> val sqlcontext = new org.apache.spark.sql.SQLContext(sc)
然后我创建了一个 json 文件并保存在 scala 路径中
{
{"id" : "1201", "name" : "satish", "age" : "25"}
{"id" : "1202", "name" : "krishna", "age" : "28"}
{"id" : "1203", "name" : "amith", "age" : "39"}
{"id" : "1204", "name" : "javed", "age" : "23"}
{"id" : "1205", "name" : "prudvi", "age" : "23"}
}
输入时出错
scala> val dfs = sqlContext.read.json("employee.json")
错误
dfs: org.apache.spark.sql.DataFrame = [_corrupt_record: string, age: string, id: string, name: string]
JSON 中的一组人看起来像:
{ "people": [
{"id" : "1201", "name" : "satish", "age" : "25"},
{"id" : "1202", "name" : "krishna", "age" : "28"},
{"id" : "1203", "name" : "amith", "age" : "39"},
{"id" : "1204", "name" : "javed", "age" : "23"},
{"id" : "1205", "name" : "prudvi", "age" : "23"}
]
}
如果你想要每行一个 json 值,正如 spark 所要求的那样,你会想要更像的东西:
{"id" : "1201", "name" : "satish", "age" : "25"}
{"id" : "1202", "name" : "krishna", "age" : "28"}
{"id" : "1203", "name" : "amith", "age" : "39"}
{"id" : "1204", "name" : "javed", "age" : "23"}
{"id" : "1205", "name" : "prudvi", "age" : "23"}
在第二种情况下,每一行都是一个有效的 json 文档。在前一种情况下,整个文件都是有效的 json 文档。在你的情况下,你也没有。有一些工具可以验证 json,例如您可以尝试在 chrome 开发人员工具中的 javascript 控制台 window 中解析 json。
从数据建模的角度来看,您通常还希望将年龄表示为出生日期而不是瞬态当前年龄...或者至少是数字而不是字符串。
我正在尝试在 spark 上搜索词。首先,我创建 sql 上下文
scala> val sqlcontext = new org.apache.spark.sql.SQLContext(sc)
然后我创建了一个 json 文件并保存在 scala 路径中
{
{"id" : "1201", "name" : "satish", "age" : "25"}
{"id" : "1202", "name" : "krishna", "age" : "28"}
{"id" : "1203", "name" : "amith", "age" : "39"}
{"id" : "1204", "name" : "javed", "age" : "23"}
{"id" : "1205", "name" : "prudvi", "age" : "23"}
}
输入时出错
scala> val dfs = sqlContext.read.json("employee.json")
错误
dfs: org.apache.spark.sql.DataFrame = [_corrupt_record: string, age: string, id: string, name: string]
JSON 中的一组人看起来像:
{ "people": [
{"id" : "1201", "name" : "satish", "age" : "25"},
{"id" : "1202", "name" : "krishna", "age" : "28"},
{"id" : "1203", "name" : "amith", "age" : "39"},
{"id" : "1204", "name" : "javed", "age" : "23"},
{"id" : "1205", "name" : "prudvi", "age" : "23"}
]
}
如果你想要每行一个 json 值,正如 spark 所要求的那样,你会想要更像的东西:
{"id" : "1201", "name" : "satish", "age" : "25"}
{"id" : "1202", "name" : "krishna", "age" : "28"}
{"id" : "1203", "name" : "amith", "age" : "39"}
{"id" : "1204", "name" : "javed", "age" : "23"}
{"id" : "1205", "name" : "prudvi", "age" : "23"}
在第二种情况下,每一行都是一个有效的 json 文档。在前一种情况下,整个文件都是有效的 json 文档。在你的情况下,你也没有。有一些工具可以验证 json,例如您可以尝试在 chrome 开发人员工具中的 javascript 控制台 window 中解析 json。
从数据建模的角度来看,您通常还希望将年龄表示为出生日期而不是瞬态当前年龄...或者至少是数字而不是字符串。