scala - AnalysisException:在数据架构中发现重复的列:`hour`、`eventTime`
问题描述
我想从json文件中加载数据,但是我得到这个异常: AnalysisException: Found duplicate column(s) in the data schema: hour
, eventTime
,这是我的代码
ss.sqlContext.setConf("spark.sql.caseSensitive", "true")
val pathList = buildFilePath(eid, url, startTime, endTime)
println(pathList)
val writePath = "/result/" + id + "/" + eid
ss.read
.json(pathList: _*)
.select(columns.split(",").map(m => new Column(m.trim)): _*)
.repartition(1)
.write.option("header", "true").csv(writePath)
ss.close()
def buildFilePath(eid: String, urls: String, startTime: String, endTime: String): List[String] = {
var eventPath = ""
if (eid.equals("1")) {
eventPath = basePath + "/event1"
} else if (eid.equals("2")) {
eventPath = basePath + "/event2"
}
urls
.split(",")
.flatMap(url => {
val dateList = getTimeRange(startTime, endTime, "yyyy-MM-dd")
dateList
.par
.map(date => eventPath + "/" + url.trim + "/" + date)
.flatMap(p => Hdfs.files(p).flatMap(f => Hdfs.files(f)))
})
.map(m => m.toString)
.toList
}
解决方案
问题解决了。由于加载多个文件,它需要这样做: .json(ss.read.textFile(pathList: _*))
推荐阅读
- regex - Fluentd 解析不同的日志格式
- javascript - WebSocket 连接需要很长时间并且失败
- kubernetes - 每两个半小时运行一次 cronjob
- node.js - java.lang.RuntimeException:无法创建服务 io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService
- javascript - Discord.js setPresence 未设置
- angular - 如何在 Jest 中为 Angular 中的 Http 拦截器编写单元测试
- python - 将 JSON 转换为 panda 数据框的问题
- java - Project Reactor - 并行执行
- javascript - esri arcgis 在 4.x 中发出点击事件不起作用
- flutter - 如何在 Flutter 中使通知栏变暗?