文档首页/
MapReduce服务 MRS/
组件操作指南(LTS版)/
使用Spark/Spark2x/
Spark常见问题/
SQL和DataFrame/
Spark2x无法访问Spark1.5创建的DataSource表
更新时间:2023-04-28 GMT+08:00
Spark2x无法访问Spark1.5创建的DataSource表
问题
在Spark2x中访问Spark1.5创建的DataSource表时,报无法获取schema信息,导致无法访问表。
回答
- 原因分析:
这是由于Spark2x与Spark1.5存储DataSoure表信息的格式不一致导致的。Spark1.5会将schema信息分成多个part,使用path.park.0作为key进行存储,读取时再将各个part都读取出来,重新拼成完整的信息。而Spark2x直接使用相应的key获取对应的信息。这样在Spark2x中去读取Spark1.5创建的DataSource表时,就无法成功读取到key对应的信息,导致解析DataSource表信息失败。
而在处理Hive格式的表时,Spark2x与Spark1.5的存储方式一致,所以Spark2x可以直接读取Spark1.5创建的表,不存在上述问题。
- 规避措施:
Spark2x可以通过创建外表的方式来创建一张指向Spark1.5表实际数据的表,这样可以实现在Spark2x中读取Spark1.5创建的DataSource表。同时,Spark1.5更新过数据后,Spark2x中访问也能感知到变化 ,反过来一样。这样即可实现Spark2x对Spark1.5创建的DataSource表的访问。
父主题: SQL和DataFrame