#最近项目再用TDH作为底层数据库支撑,所以就遇到了好多奇葩的事情;
1. 目前TDH和开源spark是不兼容的,需要修改一些参数才能正常使用;
当你使用的时候你会发现只要使用了多分隔符的表,就会出现乱码问题:
解决方案如下:
在使用sparkJdbc的方式连接使用时可以避免此问题:
private void createJdbcTempView(String tableName) {
//TODO 星环适配
JdbcDialects.registerDialect(new Hive2Dialect());
sparkSession.read()
.format("jdbc")
.option("driver", "你使用的driver")
.option("url", "你使用的url")
.option("dbtable", tableName) //建立视图的表
.option("user", "你使用的user")
.option("password", "你使用的passwd")
.load()
.createOrReplaceTempView(tableName);
}
//TODO 星环适配
private static class Hive2Dialect extends JdbcDialect {
@Override
public boolean canHandle(String url) {
return url.startsWith("jdbc:hive2");
}
@Override
public String quoteIdentifier(String colName) {
return colName;
}
}
当你使用sparksession操作时就可以避免这种问题出现!!!
2596

被折叠的 条评论
为什么被折叠?



